diff options
Diffstat (limited to 'manual/PRESENTATION_Intro')
-rw-r--r-- | manual/PRESENTATION_Intro/.gitignore | 4 | ||||
-rw-r--r-- | manual/PRESENTATION_Intro/Makefile | 10 | ||||
-rw-r--r-- | manual/PRESENTATION_Intro/counter.v | 12 | ||||
-rw-r--r-- | manual/PRESENTATION_Intro/counter.ys | 26 | ||||
-rw-r--r-- | manual/PRESENTATION_Intro/mycells.lib | 38 | ||||
-rw-r--r-- | manual/PRESENTATION_Intro/mycells.v | 23 |
6 files changed, 113 insertions, 0 deletions
diff --git a/manual/PRESENTATION_Intro/.gitignore b/manual/PRESENTATION_Intro/.gitignore new file mode 100644 index 000000000..d0c4618ac --- /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 000000000..abc354e46 --- /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 000000000..36b878e31 --- /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 000000000..68fe0308e --- /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 000000000..a0204d7e1 --- /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 000000000..802f58718 --- /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 + |