summaryrefslogtreecommitdiff
path: root/manual/PRESENTATION_ExAdv
diff options
context:
space:
mode:
Diffstat (limited to 'manual/PRESENTATION_ExAdv')
-rw-r--r--manual/PRESENTATION_ExAdv/Makefile5
-rw-r--r--manual/PRESENTATION_ExAdv/mulshift_map.v26
-rw-r--r--manual/PRESENTATION_ExAdv/mulshift_test.v5
-rw-r--r--manual/PRESENTATION_ExAdv/mulshift_test.ys7
4 files changed, 42 insertions, 1 deletions
diff --git a/manual/PRESENTATION_ExAdv/Makefile b/manual/PRESENTATION_ExAdv/Makefile
index 74f26327..3bbc239a 100644
--- a/manual/PRESENTATION_ExAdv/Makefile
+++ b/manual/PRESENTATION_ExAdv/Makefile
@@ -1,5 +1,5 @@
-all: select_01.pdf red_or3x1.pdf sym_mul.pdf mymul.pdf
+all: select_01.pdf red_or3x1.pdf sym_mul.pdf mymul.pdf mulshift.pdf
select_01.pdf: select_01.v select_01.ys
../../yosys select_01.ys
@@ -13,3 +13,6 @@ sym_mul.pdf: sym_mul_*
mymul.pdf: mymul_*
../../yosys mymul_test.ys
+mulshift.pdf: mulshift_*
+ ../../yosys mulshift_test.ys
+
diff --git a/manual/PRESENTATION_ExAdv/mulshift_map.v b/manual/PRESENTATION_ExAdv/mulshift_map.v
new file mode 100644
index 00000000..4a3c2a06
--- /dev/null
+++ b/manual/PRESENTATION_ExAdv/mulshift_map.v
@@ -0,0 +1,26 @@
+module MYMUL(A, B, Y);
+ parameter WIDTH = 1;
+ input [WIDTH-1:0] A, B;
+ output reg [WIDTH-1:0] Y;
+
+ parameter _TECHMAP_CONSTVAL_A_ = WIDTH'bx;
+ parameter _TECHMAP_CONSTVAL_B_ = WIDTH'bx;
+
+ reg _TECHMAP_FAIL_;
+ wire [1023:0] _TECHMAP_DO_ = "proc; clean";
+
+ integer i;
+ always @* begin
+ _TECHMAP_FAIL_ <= 1;
+ for (i = 0; i < WIDTH; i=i+1) begin
+ if (_TECHMAP_CONSTVAL_A_ === WIDTH'd1 << i) begin
+ _TECHMAP_FAIL_ <= 0;
+ Y <= B << i;
+ end
+ if (_TECHMAP_CONSTVAL_B_ === WIDTH'd1 << i) begin
+ _TECHMAP_FAIL_ <= 0;
+ Y <= A << i;
+ end
+ end
+ end
+endmodule
diff --git a/manual/PRESENTATION_ExAdv/mulshift_test.v b/manual/PRESENTATION_ExAdv/mulshift_test.v
new file mode 100644
index 00000000..4b975f41
--- /dev/null
+++ b/manual/PRESENTATION_ExAdv/mulshift_test.v
@@ -0,0 +1,5 @@
+module test (A, X, Y);
+input [7:0] A;
+output [7:0] X = A * 8'd 6;
+output [7:0] Y = A * 8'd 8;
+endmodule
diff --git a/manual/PRESENTATION_ExAdv/mulshift_test.ys b/manual/PRESENTATION_ExAdv/mulshift_test.ys
new file mode 100644
index 00000000..c5dac49e
--- /dev/null
+++ b/manual/PRESENTATION_ExAdv/mulshift_test.ys
@@ -0,0 +1,7 @@
+read_verilog mulshift_test.v
+hierarchy -check -top test
+
+techmap -map sym_mul_map.v \
+ -map mulshift_map.v;;
+
+show -prefix mulshift -format pdf -notitle -lib sym_mul_cells.v