From dc039d8be485070fde5535dba3ffcc14020e9aab Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Mon, 9 Sep 2024 21:03:22 +0200 Subject: [PATCH] clockgate: test fine-grained cells --- tests/techmap/clockgate.ys | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/techmap/clockgate.ys b/tests/techmap/clockgate.ys index 9a48344a030..c61dd4e6e9f 100644 --- a/tests/techmap/clockgate.ys +++ b/tests/techmap/clockgate.ys @@ -36,6 +36,15 @@ module dffe_11( input clk, en, end endmodule +module dffe_wide_11( input clk, en, + input [3:0] d1, output reg [3:0] q1, + ); + always @( posedge clk ) begin + if ( en ) + q1 <= d1; + end +endmodule + EOT proc @@ -45,6 +54,8 @@ design -save before #------------------------------------------------------------------------------ +# Test -pos + clockgate -pos pdk_icg ce:clkin:clkout -tie_lo scanen # falling edge clock flops don't get matched on -pos @@ -58,8 +69,13 @@ select -module dffe_11 -assert-count 1 t:\\pdk_icg select -module dffe_10 -assert-count 1 t:\$_NOT_ select -module dffe_11 -assert-count 0 t:\$_NOT_ +# Extra credit: multi-bit FFs work fine as well +select -module dffe_wide_11 -assert-count 1 t:\\pdk_icg + #------------------------------------------------------------------------------ +# Test -neg + design -load before clockgate -min_net_size 1 -neg pdk_icg ce:clkin:clkout -tie_lo scanen @@ -76,6 +92,30 @@ select -module dffe_01 -assert-count 0 t:\$_NOT_ #------------------------------------------------------------------------------ +# Same as first case, but on fine-grained cells + +design -load before + +techmap + +clockgate -pos pdk_icg ce:clkin:clkout -tie_lo scanen + +# falling edge clock flops don't get matched on -pos +select -module dffe_00 -assert-count 0 t:\\pdk_icg +select -module dffe_01 -assert-count 0 t:\\pdk_icg +# falling edge clock flops do get matched on -pos +select -module dffe_10 -assert-count 1 t:\\pdk_icg +select -module dffe_11 -assert-count 1 t:\\pdk_icg +# if necessary, EN is inverted, since the given ICG +# is assumed to have an active-high EN +select -module dffe_10 -assert-count 1 t:\$_NOT_ +select -module dffe_11 -assert-count 0 t:\$_NOT_ + +# Extra credit: multi-bit FFs work fine as well +select -module dffe_wide_11 -assert-count 1 t:\\pdk_icg + +#------------------------------------------------------------------------------ + design -load before clockgate -min_net_size 2 -neg pdk_icg ce:clkin:clkout -tie_lo scanen