summaryrefslogtreecommitdiff
path: root/manual/PRESENTATION_Intro
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-01-29 12:15:38 +0100
committerClifford Wolf <clifford@clifford.at>2014-01-29 12:15:38 +0100
commitcbe77bf84465ea0c4120e865189b07329b862468 (patch)
tree17728929b55a1ea72fb62b40b7d22a3989ab6de7 /manual/PRESENTATION_Intro
parentaceab5fc08ccba493b81cced8f24406ae76ac7bc (diff)
presentation progress
Diffstat (limited to 'manual/PRESENTATION_Intro')
-rw-r--r--manual/PRESENTATION_Intro/.gitignore4
-rw-r--r--manual/PRESENTATION_Intro/Makefile10
-rw-r--r--manual/PRESENTATION_Intro/counter.v12
-rw-r--r--manual/PRESENTATION_Intro/counter.ys26
-rw-r--r--manual/PRESENTATION_Intro/mycells.lib38
-rw-r--r--manual/PRESENTATION_Intro/mycells.v23
6 files changed, 113 insertions, 0 deletions
diff --git a/manual/PRESENTATION_Intro/.gitignore b/manual/PRESENTATION_Intro/.gitignore
new file mode 100644
index 00000000..d0c4618a
--- /dev/null
+++ b/manual/PRESENTATION_Intro/.gitignore
@@ -0,0 +1,4 @@
+counter_00.dot
+counter_01.dot
+counter_02.dot
+counter_03.dot
diff --git a/manual/PRESENTATION_Intro/Makefile b/manual/PRESENTATION_Intro/Makefile
new file mode 100644
index 00000000..abc354e4
--- /dev/null
+++ b/manual/PRESENTATION_Intro/Makefile
@@ -0,0 +1,10 @@
+
+all: counter_00.pdf counter_01.pdf counter_02.pdf counter_03.pdf
+
+counter_00.pdf: counter.v counter.ys mycells.lib
+ ../../yosys counter.ys
+
+counter_01.pdf: counter_00.pdf
+counter_02.pdf: counter_00.pdf
+counter_03.pdf: counter_00.pdf
+
diff --git a/manual/PRESENTATION_Intro/counter.v b/manual/PRESENTATION_Intro/counter.v
new file mode 100644
index 00000000..36b878e3
--- /dev/null
+++ b/manual/PRESENTATION_Intro/counter.v
@@ -0,0 +1,12 @@
+module counter (clk, rst, en, count);
+
+ input clk, rst, en;
+ output reg [1:0] count;
+
+ always @(posedge clk)
+ if (rst)
+ count <= 2'd0;
+ else if (en)
+ count <= count + 2'd1;
+
+endmodule
diff --git a/manual/PRESENTATION_Intro/counter.ys b/manual/PRESENTATION_Intro/counter.ys
new file mode 100644
index 00000000..68fe0308
--- /dev/null
+++ b/manual/PRESENTATION_Intro/counter.ys
@@ -0,0 +1,26 @@
+# read design
+read_verilog counter.v
+hierarchy -check -top counter
+
+show -format pdf -prefix counter_00
+
+# the high-level stuff
+proc; opt; memory; opt; fsm; opt
+
+show -format pdf -prefix counter_01
+
+# mapping to internal cell library
+techmap; splitnets -ports; opt
+
+show -format pdf -prefix counter_02
+
+# mapping flip-flops to mycells.lib
+dfflibmap -liberty mycells.lib
+
+# mapping logic to mycells.lib
+abc -liberty mycells.lib
+
+# cleanup
+clean
+
+show -lib mycells.v -format pdf -prefix counter_03
diff --git a/manual/PRESENTATION_Intro/mycells.lib b/manual/PRESENTATION_Intro/mycells.lib
new file mode 100644
index 00000000..a0204d7e
--- /dev/null
+++ b/manual/PRESENTATION_Intro/mycells.lib
@@ -0,0 +1,38 @@
+library(demo) {
+ cell(BUF) {
+ area: 6;
+ pin(A) { direction: input; }
+ pin(Y) { direction: output;
+ function: "A"; }
+ }
+ cell(NOT) {
+ area: 3;
+ pin(A) { direction: input; }
+ pin(Y) { direction: output;
+ function: "A'"; }
+ }
+ cell(NAND) {
+ area: 4;
+ pin(A) { direction: input; }
+ pin(B) { direction: input; }
+ pin(Y) { direction: output;
+ function: "(A*B)'"; }
+ }
+ cell(NOR) {
+ area: 4;
+ pin(A) { direction: input; }
+ pin(B) { direction: input; }
+ pin(Y) { direction: output;
+ function: "(A+B)'"; }
+ }
+ cell(DFF) {
+ area: 18;
+ ff(IQ, IQN) { clocked_on: C;
+ next_state: D; }
+ pin(C) { direction: input;
+ clock: true; }
+ pin(D) { direction: input; }
+ pin(Q) { direction: output;
+ function: "IQ"; }
+ }
+}
diff --git a/manual/PRESENTATION_Intro/mycells.v b/manual/PRESENTATION_Intro/mycells.v
new file mode 100644
index 00000000..802f5871
--- /dev/null
+++ b/manual/PRESENTATION_Intro/mycells.v
@@ -0,0 +1,23 @@
+
+module NOT(A, Y);
+input A;
+output Y = ~A;
+endmodule
+
+module NAND(A, B, Y);
+input A, B;
+output Y = ~(A & B);
+endmodule
+
+module NOR(A, B, Y);
+input A, B;
+output Y = ~(A | B);
+endmodule
+
+module DFF(C, D, Q);
+input C, D;
+output reg Q;
+always @(posedge C)
+ Q <= D;
+endmodule
+