Add shregmap -tech xilinx test
authorEddie Hung <eddie@fpgeh.com>
Wed, 12 Jun 2019 15:34:06 +0000 (08:34 -0700)
committerEddie Hung <eddie@fpgeh.com>
Wed, 12 Jun 2019 15:34:06 +0000 (08:34 -0700)
tests/various/shregmap.v
tests/various/shregmap.ys

index 56e05c2c07bbb775e3a69ceabdd7e5c89a3c66b2..604c2c976b9f27ab681f61cb32e16963a3529210 100644 (file)
@@ -1,4 +1,4 @@
-module shregmap_test(input i, clk, output [1:0] q);
+module shregmap_static_test(input i, clk, output [1:0] q);
 reg head = 1'b0;
 reg [3:0] shift1 = 4'b0000;
 reg [3:0] shift2 = 4'b0000;
@@ -20,3 +20,29 @@ always @(posedge C)
     r <= { r[DEPTH-2:0], D };
 assign Q = r[DEPTH-1];
 endmodule
+
+module shregmap_variable_test(input i, clk, input [1:0] l1, l2, output [1:0] q);
+reg head = 1'b0;
+reg [3:0] shift1 = 4'b0000;
+reg [3:0] shift2 = 4'b0000;
+
+always @(posedge clk) begin
+    head <= i;
+    shift1 <= {shift1[2:0], head};
+    shift2 <= {shift2[2:0], head};
+end
+
+assign q = {shift2[l2], shift1[l1]};
+endmodule
+
+module $__XILINX_SHREG_(input C, D, input [1:0] L, output Q);
+parameter CLKPOL = 1;
+parameter ENPOL = 1;
+parameter DEPTH = 1;
+parameter [DEPTH-1:0] INIT = {DEPTH{1'b0}};
+reg [DEPTH-1:0] r = INIT;
+wire clk = C ^ CLKPOL;
+always @(posedge C)
+    r <= { r[DEPTH-2:0], D };
+assign Q = r[L];
+endmodule
index ca7f4701539acc82d47374913e2b052e73fa160e..d644a88aae1d4dc64a1f8a43a1f1d9ff0fdeecec 100644 (file)
@@ -1,6 +1,8 @@
 read_verilog shregmap.v
+design -save read
+
 design -copy-to model $__SHREG_DFF_P_
-hierarchy -top shregmap_test
+hierarchy -top shregmap_static_test
 prep
 design -save gold
 
@@ -29,3 +31,36 @@ stat
 
 design -load gate
 stat
+
+##########
+
+design -load read
+design -copy-to model $__XILINX_SHREG_
+hierarchy -top shregmap_variable_test
+prep
+design -save gold
+
+simplemap t:$dff t:$dffe
+shregmap -tech xilinx
+
+stat
+# show -width
+write_verilog -noexpr -norename
+select -assert-count 1 t:$_DFF_P_
+select -assert-count 2 t:$__XILINX_SHREG_
+
+design -stash gate
+
+design -import gold -as gold
+design -import gate -as gate
+design -copy-from model -as $__XILINX_SHREG_ \$__XILINX_SHREG_
+prep
+
+miter -equiv -flatten -make_assert -make_outputs gold gate miter
+sat -verify -prove-asserts -show-ports -seq 5 miter
+
+design -load gold
+stat
+
+design -load gate
+stat