Make multiplier wider, do not do tech independent synth
authorEddie Hung <eddie@fpgeh.com>
Thu, 22 Aug 2019 19:17:25 +0000 (12:17 -0700)
committerEddie Hung <eddie@fpgeh.com>
Thu, 22 Aug 2019 23:04:07 +0000 (16:04 -0700)
tests/ice40/mul.v
tests/ice40/mul.ys

index c099db0d9cef13155aba6f4db10dd71db05e4833..d5b48b1d7721790eeb2028641875cdf0115a2b0b 100644 (file)
@@ -1,10 +1,9 @@
 module top
 (
- input [3:0] x,
- input [3:0] y,
+ input [5:0] x,
+ input [5:0] y,
 
- output [3:0] A,
- output [3:0] B
+ output [11:0] A,
  );
 
 assign A =  x * y;
index 35048d14abd449b480750c71e077b4bdd1d5c070..adf1b3211974ed932b803dfbe83d115b571ba571 100644 (file)
@@ -1,9 +1,8 @@
 read_verilog mul.v
 hierarchy -top top
-synth -flatten -run coarse # technology-independent coarse grained synthesis
+#synth -flatten -run coarse # technology-independent coarse grained synthesis
 equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 -dsp # equivalency check same as technology-dependent fine-grained synthesis
 design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design)
 cd top # Constrain all select calls below inside the top module
-select -assert-count 15 t:SB_LUT4
-select -assert-count 3 t:SB_CARRY
-select -assert-none t:SB_LUT4 t:SB_CARRY %% t:* %D
+select -assert-count 1 t:SB_MAC16
+select -assert-none t:SB_MAC16 %% t:* %D