Stefan Holst
1 year ago
20 changed files with 683 additions and 261 deletions
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
Technology Libraries |
||||
==================== |
||||
|
||||
.. automodule:: kyupy.techlib |
||||
:members: |
||||
|
||||
|
@ -0,0 +1,335 @@
@@ -0,0 +1,335 @@
|
||||
/* Generated by Yosys 0.9 (git sha1 UNKNOWN, gcc 4.8.5 -fPIC -Os) */ |
||||
|
||||
(* top = 1 *) |
||||
(* src = "rng_haltonBase2.v:1" *) |
||||
module rng1(clk, reset, o_output); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
wire [11:0] _00_; |
||||
wire _01_; |
||||
wire _02_; |
||||
wire _03_; |
||||
wire _04_; |
||||
wire _05_; |
||||
wire _06_; |
||||
wire _07_; |
||||
wire _08_; |
||||
wire _09_; |
||||
wire _10_; |
||||
wire _11_; |
||||
wire _12_; |
||||
wire _13_; |
||||
wire _14_; |
||||
wire _15_; |
||||
wire _16_; |
||||
wire _17_; |
||||
wire _18_; |
||||
wire _19_; |
||||
wire _20_; |
||||
wire _21_; |
||||
wire _22_; |
||||
wire _23_; |
||||
wire _24_; |
||||
wire _25_; |
||||
wire _26_; |
||||
wire _27_; |
||||
wire _28_; |
||||
wire _29_; |
||||
wire _30_; |
||||
wire _31_; |
||||
wire _32_; |
||||
wire _33_; |
||||
wire _34_; |
||||
(* src = "rng_haltonBase2.v:2" *) |
||||
input clk; |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:12" *) |
||||
wire \halton.clk ; |
||||
(* init = 12'h000 *) |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:17" *) |
||||
wire [11:0] \halton.counter ; |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:14" *) |
||||
wire [11:0] \halton.o_output ; |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:13" *) |
||||
wire \halton.reset ; |
||||
(* src = "rng_haltonBase2.v:4" *) |
||||
output [11:0] o_output; |
||||
(* src = "rng_haltonBase2.v:3" *) |
||||
input reset; |
||||
AND2X1 _35_ ( |
||||
.IN1(\halton.counter [1]), |
||||
.IN2(\halton.counter [0]), |
||||
.Q(_01_) |
||||
); |
||||
NOR2X0 _36_ ( |
||||
.IN1(\halton.counter [1]), |
||||
.IN2(\halton.counter [0]), |
||||
.QN(_02_) |
||||
); |
||||
NOR3X0 _37_ ( |
||||
.IN1(reset), |
||||
.IN2(_01_), |
||||
.IN3(_02_), |
||||
.QN(_00_[1]) |
||||
); |
||||
AND2X1 _38_ ( |
||||
.IN1(\halton.counter [2]), |
||||
.IN2(_01_), |
||||
.Q(_03_) |
||||
); |
||||
NOR2X0 _39_ ( |
||||
.IN1(\halton.counter [2]), |
||||
.IN2(_01_), |
||||
.QN(_04_) |
||||
); |
||||
NOR3X0 _40_ ( |
||||
.IN1(reset), |
||||
.IN2(_03_), |
||||
.IN3(_04_), |
||||
.QN(_00_[2]) |
||||
); |
||||
AND4X1 _41_ ( |
||||
.IN1(\halton.counter [1]), |
||||
.IN2(\halton.counter [0]), |
||||
.IN3(\halton.counter [2]), |
||||
.IN4(\halton.counter [3]), |
||||
.Q(_05_) |
||||
); |
||||
NOR2X0 _42_ ( |
||||
.IN1(\halton.counter [3]), |
||||
.IN2(_03_), |
||||
.QN(_06_) |
||||
); |
||||
NOR3X0 _43_ ( |
||||
.IN1(reset), |
||||
.IN2(_05_), |
||||
.IN3(_06_), |
||||
.QN(_00_[3]) |
||||
); |
||||
AND2X1 _44_ ( |
||||
.IN1(\halton.counter [4]), |
||||
.IN2(_05_), |
||||
.Q(_07_) |
||||
); |
||||
NOR2X0 _45_ ( |
||||
.IN1(\halton.counter [4]), |
||||
.IN2(_05_), |
||||
.QN(_08_) |
||||
); |
||||
NOR3X0 _46_ ( |
||||
.IN1(reset), |
||||
.IN2(_07_), |
||||
.IN3(_08_), |
||||
.QN(_00_[4]) |
||||
); |
||||
AND2X1 _47_ ( |
||||
.IN1(\halton.counter [5]), |
||||
.IN2(_07_), |
||||
.Q(_09_) |
||||
); |
||||
NOR2X0 _48_ ( |
||||
.IN1(\halton.counter [5]), |
||||
.IN2(_07_), |
||||
.QN(_10_) |
||||
); |
||||
NOR3X0 _49_ ( |
||||
.IN1(reset), |
||||
.IN2(_09_), |
||||
.IN3(_10_), |
||||
.QN(_00_[5]) |
||||
); |
||||
AND4X1 _50_ ( |
||||
.IN1(\halton.counter [4]), |
||||
.IN2(\halton.counter [5]), |
||||
.IN3(\halton.counter [6]), |
||||
.IN4(_05_), |
||||
.Q(_11_) |
||||
); |
||||
NOR2X0 _51_ ( |
||||
.IN1(\halton.counter [6]), |
||||
.IN2(_09_), |
||||
.QN(_12_) |
||||
); |
||||
NOR3X0 _52_ ( |
||||
.IN1(reset), |
||||
.IN2(_11_), |
||||
.IN3(_12_), |
||||
.QN(_00_[6]) |
||||
); |
||||
AND2X1 _53_ ( |
||||
.IN1(\halton.counter [7]), |
||||
.IN2(_11_), |
||||
.Q(_13_) |
||||
); |
||||
NOR2X0 _54_ ( |
||||
.IN1(\halton.counter [7]), |
||||
.IN2(_11_), |
||||
.QN(_14_) |
||||
); |
||||
NOR3X0 _55_ ( |
||||
.IN1(reset), |
||||
.IN2(_13_), |
||||
.IN3(_14_), |
||||
.QN(_00_[7]) |
||||
); |
||||
AND3X1 _56_ ( |
||||
.IN1(\halton.counter [7]), |
||||
.IN2(\halton.counter [8]), |
||||
.IN3(_11_), |
||||
.Q(_15_) |
||||
); |
||||
NOR2X0 _57_ ( |
||||
.IN1(\halton.counter [8]), |
||||
.IN2(_13_), |
||||
.QN(_16_) |
||||
); |
||||
NOR3X0 _58_ ( |
||||
.IN1(reset), |
||||
.IN2(_15_), |
||||
.IN3(_16_), |
||||
.QN(_00_[8]) |
||||
); |
||||
AND4X1 _59_ ( |
||||
.IN1(\halton.counter [7]), |
||||
.IN2(\halton.counter [8]), |
||||
.IN3(\halton.counter [9]), |
||||
.IN4(_11_), |
||||
.Q(_17_) |
||||
); |
||||
NOR2X0 _60_ ( |
||||
.IN1(\halton.counter [9]), |
||||
.IN2(_15_), |
||||
.QN(_18_) |
||||
); |
||||
NOR3X0 _61_ ( |
||||
.IN1(reset), |
||||
.IN2(_17_), |
||||
.IN3(_18_), |
||||
.QN(_00_[9]) |
||||
); |
||||
AND2X1 _62_ ( |
||||
.IN1(\halton.counter [10]), |
||||
.IN2(_17_), |
||||
.Q(_19_) |
||||
); |
||||
NOR2X0 _63_ ( |
||||
.IN1(\halton.counter [10]), |
||||
.IN2(_17_), |
||||
.QN(_20_) |
||||
); |
||||
NOR3X0 _64_ ( |
||||
.IN1(reset), |
||||
.IN2(_19_), |
||||
.IN3(_20_), |
||||
.QN(_00_[10]) |
||||
); |
||||
AND3X1 _65_ ( |
||||
.IN1(\halton.counter [10]), |
||||
.IN2(\halton.counter [11]), |
||||
.IN3(_17_), |
||||
.Q(_21_) |
||||
); |
||||
AOI21X1 _66_ ( |
||||
.IN1(\halton.counter [10]), |
||||
.IN2(_17_), |
||||
.IN3(\halton.counter [11]), |
||||
.QN(_22_) |
||||
); |
||||
NOR3X0 _67_ ( |
||||
.IN1(reset), |
||||
.IN2(_21_), |
||||
.IN3(_22_), |
||||
.QN(_00_[11]) |
||||
); |
||||
NOR2X0 _68_ ( |
||||
.IN1(reset), |
||||
.IN2(\halton.counter [0]), |
||||
.QN(_00_[0]) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _69_ ( |
||||
.CLK(clk), |
||||
.D(_00_[0]), |
||||
.Q(\halton.counter [0]), |
||||
.QN(_23_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _70_ ( |
||||
.CLK(clk), |
||||
.D(_00_[1]), |
||||
.Q(\halton.counter [1]), |
||||
.QN(_24_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _71_ ( |
||||
.CLK(clk), |
||||
.D(_00_[2]), |
||||
.Q(\halton.counter [2]), |
||||
.QN(_25_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _72_ ( |
||||
.CLK(clk), |
||||
.D(_00_[3]), |
||||
.Q(\halton.counter [3]), |
||||
.QN(_26_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _73_ ( |
||||
.CLK(clk), |
||||
.D(_00_[4]), |
||||
.Q(\halton.counter [4]), |
||||
.QN(_27_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _74_ ( |
||||
.CLK(clk), |
||||
.D(_00_[5]), |
||||
.Q(\halton.counter [5]), |
||||
.QN(_28_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _75_ ( |
||||
.CLK(clk), |
||||
.D(_00_[6]), |
||||
.Q(\halton.counter [6]), |
||||
.QN(_29_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _76_ ( |
||||
.CLK(clk), |
||||
.D(_00_[7]), |
||||
.Q(\halton.counter [7]), |
||||
.QN(_30_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _77_ ( |
||||
.CLK(clk), |
||||
.D(_00_[8]), |
||||
.Q(\halton.counter [8]), |
||||
.QN(_31_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _78_ ( |
||||
.CLK(clk), |
||||
.D(_00_[9]), |
||||
.Q(\halton.counter [9]), |
||||
.QN(_32_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _79_ ( |
||||
.CLK(clk), |
||||
.D(_00_[10]), |
||||
.Q(\halton.counter [10]), |
||||
.QN(_33_) |
||||
); |
||||
(* src = "rng_haltonBase2.v:7|rng_haltonBase2.v:19" *) |
||||
DFFX1 _80_ ( |
||||
.CLK(clk), |
||||
.D(_00_[11]), |
||||
.Q(\halton.counter [11]), |
||||
.QN(_34_) |
||||
); |
||||
assign \halton.clk = clk; |
||||
assign \halton.o_output = { \halton.counter [0], \halton.counter [1], \halton.counter [2], \halton.counter [3], \halton.counter [4], \halton.counter [5], \halton.counter [6], \halton.counter [7], \halton.counter [8], \halton.counter [9], \halton.counter [10], \halton.counter [11] }; |
||||
assign \halton.reset = reset; |
||||
assign o_output = { \halton.counter [0], \halton.counter [1], \halton.counter [2], \halton.counter [3], \halton.counter [4], \halton.counter [5], \halton.counter [6], \halton.counter [7], \halton.counter [8], \halton.counter [9], \halton.counter [10], \halton.counter [11] }; |
||||
endmodule |
@ -1,21 +1,21 @@
@@ -1,21 +1,21 @@
|
||||
from kyupy import stil, verilog |
||||
from kyupy.techlib import SAED32 |
||||
|
||||
def test_b15(mydir): |
||||
b15 = verilog.load(mydir / 'b15_2ig.v.gz', tlib=SAED32) |
||||
|
||||
def test_b14(mydir): |
||||
b14 = verilog.load(mydir / 'b14.v.gz') |
||||
|
||||
s = stil.load(mydir / 'b14.stuck.stil.gz') |
||||
s = stil.load(mydir / 'b15_2ig.sa_nf.stil.gz') |
||||
assert len(s.signal_groups) == 10 |
||||
assert len(s.scan_chains) == 1 |
||||
assert len(s.calls) == 2163 |
||||
tests = s.tests(b14) |
||||
resp = s.responses(b14) |
||||
assert len(s.calls) == 1357 |
||||
tests = s.tests(b15) |
||||
resp = s.responses(b15) |
||||
assert len(tests) > 0 |
||||
assert len(resp) > 0 |
||||
|
||||
s2 = stil.load(mydir / 'b14.transition.stil.gz') |
||||
tests = s2.tests_loc(b14) |
||||
resp = s2.responses(b14) |
||||
s2 = stil.load(mydir / 'b15_2ig.tf_nf.stil.gz') |
||||
tests = s2.tests_loc(b15) |
||||
resp = s2.responses(b15) |
||||
assert len(tests) > 0 |
||||
assert len(resp) > 0 |
||||
|
||||
|
Loading…
Reference in new issue