mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-28 03:15:50 +00:00
Move presentation intro example
Rework images makefile a bit to get it to import and build from resources folder(s). Currently requires running twice from a clean build due to the way it finds `.dot` files to convert.
This commit is contained in:
parent
cd6e63e1a9
commit
20c2708383
15 changed files with 249 additions and 438 deletions
8
docs/resources/PRESENTATION_Intro/.gitignore
vendored
Normal file
8
docs/resources/PRESENTATION_Intro/.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
counter_00.dot
|
||||
counter_01.dot
|
||||
counter_02.dot
|
||||
counter_03.dot
|
||||
counter_00.pdf
|
||||
counter_01.pdf
|
||||
counter_02.pdf
|
||||
counter_03.pdf
|
10
docs/resources/PRESENTATION_Intro/Makefile
Normal file
10
docs/resources/PRESENTATION_Intro/Makefile
Normal file
|
@ -0,0 +1,10 @@
|
|||
|
||||
all: counter_00.dot counter_01.dot counter_02.dot counter_03.dot
|
||||
|
||||
counter_00.dot: counter.v counter.ys mycells.lib
|
||||
../../../yosys counter_outputs.ys
|
||||
|
||||
counter_01.dot: counter_00.dot
|
||||
counter_02.dot: counter_00.dot
|
||||
counter_03.dot: counter_00.dot
|
||||
|
12
docs/resources/PRESENTATION_Intro/counter.v
Normal file
12
docs/resources/PRESENTATION_Intro/counter.v
Normal file
|
@ -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
|
21
docs/resources/PRESENTATION_Intro/counter.ys
Normal file
21
docs/resources/PRESENTATION_Intro/counter.ys
Normal file
|
@ -0,0 +1,21 @@
|
|||
# read design
|
||||
read_verilog counter.v
|
||||
hierarchy -check -top counter
|
||||
|
||||
# the high-level stuff
|
||||
proc; opt; memory; opt; fsm; opt
|
||||
|
||||
# mapping to internal cell library
|
||||
techmap; opt
|
||||
|
||||
# mapping flip-flops to mycells.lib
|
||||
dfflibmap -liberty mycells.lib
|
||||
|
||||
# mapping logic to mycells.lib
|
||||
abc -liberty mycells.lib
|
||||
|
||||
# cleanup
|
||||
clean
|
||||
|
||||
# write synthesized design
|
||||
write_verilog synth.v
|
27
docs/resources/PRESENTATION_Intro/counter_outputs.ys
Normal file
27
docs/resources/PRESENTATION_Intro/counter_outputs.ys
Normal file
|
@ -0,0 +1,27 @@
|
|||
# read design
|
||||
read_verilog counter.v
|
||||
hierarchy -check -top counter
|
||||
|
||||
show -notitle -format dot -prefix counter_00
|
||||
|
||||
# the high-level stuff
|
||||
proc; opt; memory; opt; fsm; opt
|
||||
|
||||
show -notitle -format dot -prefix counter_01
|
||||
|
||||
# mapping to internal cell library
|
||||
techmap; opt
|
||||
|
||||
splitnets -ports;;
|
||||
show -notitle -format dot -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 -notitle -lib mycells.v -format dot -prefix counter_03
|
38
docs/resources/PRESENTATION_Intro/mycells.lib
Normal file
38
docs/resources/PRESENTATION_Intro/mycells.lib
Normal file
|
@ -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"; }
|
||||
}
|
||||
}
|
23
docs/resources/PRESENTATION_Intro/mycells.v
Normal file
23
docs/resources/PRESENTATION_Intro/mycells.v
Normal file
|
@ -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
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue