Improve MISTRAL_FF specify rules
authorDan Ravensloft <dan.ravensloft@gmail.com>
Thu, 28 May 2020 10:33:19 +0000 (11:33 +0100)
committerMarcelina Koƛcielnicka <mwk@0x04.net>
Sat, 4 Jul 2020 17:45:10 +0000 (19:45 +0200)
Co-authored-by: Eddie Hung <eddie@fpgeh.com>
techlibs/intel_alm/common/dff_sim.v
tests/arch/intel_alm/fsm.ys

index 38e3d661837f8c3810328d422cbd170154e315b1..9ff8f9f6715500bd695df6078a2e6dd25eadc1a0 100644 (file)
@@ -79,10 +79,9 @@ module MISTRAL_FF(
 );
 
 specify
-    if (ENA) (posedge CLK => (Q : DATAIN)) = `SYNCPATH;
-    if (ENA) (posedge CLK => (Q : SCLR)) = `SYNCPATH;
-    if (ENA) (posedge CLK => (Q : SLOAD)) = `SYNCPATH;
-    if (ENA) (posedge CLK => (Q : SDATA)) = `SYNCPATH;
+    if (ENA && ACLR !== 1'b0 && !SCLR && !SLOAD) (posedge CLK => (Q : DATAIN)) = `SYNCPATH;
+    if (ENA && SCLR) (posedge CLK => (Q : 1'b0)) = `SYNCPATH;
+    if (ENA && !SCLR && SLOAD) (posedge CLK => (Q : SDATA)) = `SYNCPATH;
 
     $setup(DATAIN, posedge CLK, `SYNCSETUP);
     $setup(ENA, posedge CLK, `SYNCSETUP);
@@ -90,7 +89,7 @@ specify
     $setup(SLOAD, posedge CLK, `SYNCSETUP);
     $setup(SDATA, posedge CLK, `SYNCSETUP);
 
-    if (!ACLR) (ACLR => Q) = `COMBPATH;
+    if (ACLR === 1'b0) (ACLR => Q) = `COMBPATH;
 endspecify
 
 initial begin
index 20321c62f1fe9589fa3da3175c03c55f7d5dadc0..02e4a9789bb32fbec9019388dec1450e83e998b1 100644 (file)
@@ -13,7 +13,8 @@ cd fsm # Constrain all select calls below inside the top module
 
 select -assert-count 6 t:MISTRAL_FF
 select -assert-max 2 t:MISTRAL_ALUT2 # Clang returns 2, GCC returns 1
+select -assert-count 1 t:MISTRAL_ALUT3
 select -assert-max 1 t:MISTRAL_ALUT4 # Clang returns 0, GCC returns 1
 select -assert-max 5 t:MISTRAL_ALUT5 # Clang returns 5, GCC returns 4
 select -assert-max 2 t:MISTRAL_ALUT6 # Clang returns 1, GCC returns 2
-select -assert-none t:MISTRAL_FF t:MISTRAL_ALUT2 t:MISTRAL_ALUT4 t:MISTRAL_ALUT5 t:MISTRAL_ALUT6 %% t:* %D
+select -assert-none t:MISTRAL_FF t:MISTRAL_ALUT2 t:MISTRAL_ALUT3 t:MISTRAL_ALUT4 t:MISTRAL_ALUT5 t:MISTRAL_ALUT6 %% t:* %D