added flip-flop simulation capabilities. added examples: merry xmas greeter and 7 segment display driver and counter.
This commit is contained in:
parent
625b378bdd
commit
5917cd9717
|
|
@ -1078,6 +1078,7 @@ int callback(int event, int mx, int my, KeySym key,
|
|||
break;
|
||||
}
|
||||
if(key >= '0' && key <= '2' && state == 0) { /* Toggle pin logic level */
|
||||
if(xctx->semaphore >= 2) break;
|
||||
logic_set(key - '0');
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,11 +93,19 @@ void free_hilight_hash(void) /* remove the whole hash table */
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/* by default:
|
||||
* active_layer[0] = 7
|
||||
* active_layer[1] = 8
|
||||
* active_layer[2] = 10 if 9 is disabled it is skipped
|
||||
* ...
|
||||
* if a layer is disabled (not viewable) it is skipped
|
||||
* active layers is the total number of layers for hilights.
|
||||
*/
|
||||
int get_color(int value)
|
||||
{
|
||||
int x;
|
||||
|
||||
if(value < 0) return -value;
|
||||
if(n_active_layers) {
|
||||
x = value%(n_active_layers);
|
||||
return active_layer[x];
|
||||
|
|
@ -217,8 +225,8 @@ struct hilight_hashentry *hilight_lookup(const char *token, int value, int what)
|
|||
my_strdup(138, &(entry->token),token);
|
||||
entry->path = NULL;
|
||||
my_strdup(139, &(entry->path),xctx->sch_path[xctx->currsch]);
|
||||
entry->oldvalue=value; /* just created. There is no oldvalue */
|
||||
entry->value=value;
|
||||
entry->time=xctx->hilight_time;
|
||||
entry->hash=hashcode;
|
||||
*preventry=entry;
|
||||
xctx->hilight_nets=1; /* some nets should be hilighted .... 07122002 */
|
||||
|
|
@ -234,8 +242,8 @@ struct hilight_hashentry *hilight_lookup(const char *token, int value, int what)
|
|||
my_free(764, &entry);
|
||||
*preventry=saveptr;
|
||||
} else if(what == XINSERT ) {
|
||||
entry->oldvalue=entry->value;
|
||||
entry->value = value;
|
||||
entry->time=xctx->hilight_time;
|
||||
}
|
||||
return entry; /* found matching entry, return the address */
|
||||
}
|
||||
|
|
@ -845,10 +853,10 @@ void propagate_hilights(int set, int clear, int mode)
|
|||
if(xctx->hilight_nets && enable_drill && set) drill_hilight(mode);
|
||||
}
|
||||
|
||||
|
||||
#define LOGIC_X 7
|
||||
#define LOGIC_0 5
|
||||
#define LOGIC_1 0
|
||||
/* use negative values to bypass the normal hilight color enumeration */
|
||||
#define LOGIC_X -1
|
||||
#define LOGIC_0 -12
|
||||
#define LOGIC_1 -5
|
||||
|
||||
#define STACKMAX 100
|
||||
int get_logic_value(int inst, int n)
|
||||
|
|
@ -959,6 +967,7 @@ void propagate_logic()
|
|||
int val, oldval;
|
||||
static int map[] = {LOGIC_0, LOGIC_1, LOGIC_X};
|
||||
|
||||
tclsetvar("tclstop", "0");
|
||||
prepare_netlist_structs(0);
|
||||
while(1) {
|
||||
found=0;
|
||||
|
|
@ -971,6 +980,26 @@ void propagate_logic()
|
|||
if(propagate_str) {
|
||||
int n = 1;
|
||||
const char *propag;
|
||||
int clock_pin, clock_val;
|
||||
const char *clock = get_tok_value(rct[j].prop_ptr, "clock", 0);
|
||||
clock_pin = clock[0] - '0';
|
||||
if(clock_pin != -1) {
|
||||
entry = bus_hilight_lookup(xctx->inst[i].node[j], 0, XLOOKUP); /* clock pin */
|
||||
clock_val = (!entry) ? LOGIC_X : entry->value;
|
||||
if(entry) {
|
||||
if(clock_pin == 0) { /* clock falling edge */
|
||||
if( clock_val != LOGIC_0) continue;
|
||||
if(entry && entry->time != xctx->hilight_time) continue;
|
||||
} else if(clock_pin == 1) { /* clock rising edge */
|
||||
if( clock_val != LOGIC_1) continue;
|
||||
if(entry && entry->time != xctx->hilight_time) continue;
|
||||
} else if(clock_pin == 2) { /* set/clear active low */
|
||||
if( clock_val != LOGIC_0) continue;
|
||||
} else if(clock_pin == 3) { /* set/clear active high */
|
||||
if( clock_val != LOGIC_1) continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
dbg(1, "propagate_logic(): inst=%d propagate_str=%s\n", i, propagate_str);
|
||||
while(1) {
|
||||
propag = find_nth(propagate_str, ',', n);
|
||||
|
|
@ -982,6 +1011,10 @@ void propagate_logic()
|
|||
xctx->inst[i].instname, j, propagate_str, propagate);
|
||||
continue;
|
||||
}
|
||||
if(!xctx->inst[i].node[propagate]) {
|
||||
dbg(0, "Error: inst %s, output in %d unconnected\n", xctx->inst[i].instname, propagate);
|
||||
break;
|
||||
}
|
||||
/* get net to propagate hilight to...*/
|
||||
/* fast option: dont use net_name() (no expandlabel though) */
|
||||
/* THIS MUST BE DONE TO HANDLE VECTOR INSTANCES/BUSES */
|
||||
|
|
@ -1004,6 +1037,7 @@ void propagate_logic()
|
|||
/* get out from infinite loops (circuit is oscillating) */
|
||||
Tcl_VarEval(interp, "update; if {$::tclstop == 1} {return 1} else {return 0}", NULL);
|
||||
if( tclresult()[0] == '1') break;
|
||||
xctx->hilight_time++;
|
||||
} /* while(1) */
|
||||
my_free(1224, &propagate_str);
|
||||
my_free(1222, &propagated_net);
|
||||
|
|
|
|||
|
|
@ -456,6 +456,7 @@ void alloc_xschem_data()
|
|||
xctx->nl_xr = xctx->nl_yr = xctx->nl_xr2 = xctx->nl_yr2 = 0.0;
|
||||
xctx->nl_sel = xctx->nl_sem = 0;
|
||||
|
||||
xctx->hilight_time = 0; /* timestamp for sims */
|
||||
xctx->hilight_nets = 0;
|
||||
xctx->hilight_color = 0;
|
||||
xctx->rectcolor = 0;
|
||||
|
|
|
|||
|
|
@ -557,6 +557,7 @@ typedef struct {
|
|||
struct hilight_hashentry *hilight_table[HASHSIZE];
|
||||
int hilight_nets;
|
||||
int hilight_color;
|
||||
int hilight_time; /* timestamp for sims */
|
||||
unsigned int rectcolor; /* current layer */
|
||||
/* get_unnamed_node() */
|
||||
int new_node;
|
||||
|
|
@ -642,7 +643,7 @@ struct hilight_hashentry {
|
|||
char *token;
|
||||
char *path; /* hierarchy path */
|
||||
int value; /* hilight color */
|
||||
int oldvalue; /* previous hilight color */
|
||||
int time; /*delta-time for sims */
|
||||
};
|
||||
|
||||
/* for netlist.c */
|
||||
|
|
|
|||
|
|
@ -48,19 +48,19 @@ N 870 -300 990 -300 {lab=#net1}
|
|||
N 910 -340 910 -250 {lab=#net2}
|
||||
N 910 -270 970 -270 {lab=#net2}
|
||||
N 930 -310 960 -300 {lab=#net1}
|
||||
N 380 -530 700 -530 {lab=xxx}
|
||||
N 380 -530 700 -530 {lab=BUS[4:0]}
|
||||
N 510 -640 510 -540 {lab=BUS[1]}
|
||||
N 410 -600 410 -540 {lab=BUS[2]}
|
||||
C {poweramp.sym} 160 -440 0 0 {name=x1
|
||||
C {poweramp.sym} 160 -460 0 0 {name=x1
|
||||
tclcommand="xschem descend"}
|
||||
C {tesla.sym} 160 -360 0 0 {name=x2}
|
||||
C {test_ne555.sym} 160 -320 0 0 {name=x3}
|
||||
C {test_lm324.sym} 160 -280 0 0 {name=x4}
|
||||
C {osc.sym} 160 -400 0 0 {name=x5}
|
||||
C {tesla.sym} 160 -380 0 0 {name=x2}
|
||||
C {test_ne555.sym} 160 -340 0 0 {name=x3}
|
||||
C {test_lm324.sym} 160 -300 0 0 {name=x4}
|
||||
C {osc.sym} 160 -420 0 0 {name=x5}
|
||||
C {title.sym} 160 -30 0 0 {name=l1 author="Stefan Schippers"}
|
||||
C {cmos_example.sym} 160 -480 0 0 {name=x6}
|
||||
C {greycnt.sym} 160 -520 0 0 {name=x8}
|
||||
C {loading.sym} 160 -560 0 0 {name=x9}
|
||||
C {cmos_example.sym} 160 -500 0 0 {name=x6}
|
||||
C {greycnt.sym} 160 -540 0 0 {name=x8}
|
||||
C {loading.sym} 160 -580 0 0 {name=x9}
|
||||
C {inv_bsource.sym} 930 -200 0 0 {name=B1 TABLE="1.4 3.0 1.6 0.0"}
|
||||
C {launcher.sym} 460 -210 0 0 {name=h1
|
||||
descr="XSCHEM ON REPO.HU"
|
||||
|
|
@ -77,11 +77,13 @@ url="$\{XSCHEM_SHAREDIR\}/../doc/xschem/index.html"
|
|||
program=x-www-browser
|
||||
|
||||
}
|
||||
C {rlc.sym} 160 -600 0 0 {name=x0}
|
||||
C {rlc.sym} 160 -620 0 0 {name=x0}
|
||||
C {lab_pin.sym} 700 -530 0 1 {name=l2 sig_type=std_logic lab=BUS[4:0]}
|
||||
C {bus_connect.sym} 500 -530 0 0 {name=l3 lab=BUS[1]}
|
||||
C {bus_connect_nolab.sym} 400 -530 0 0 {name=r1}
|
||||
C {lab_pin.sym} 410 -600 3 1 {name=l4 sig_type=std_logic lab=BUS[2]}
|
||||
C {LCC_instances.sym} 160 -240 0 0 {name=x7}
|
||||
C {test_backannotated_subckt.sym} 160 -200 0 0 {name=x10}
|
||||
C {plot_manipulation.sym} 160 -160 0 0 {name=x11}
|
||||
C {LCC_instances.sym} 160 -260 0 0 {name=x7}
|
||||
C {test_backannotated_subckt.sym} 160 -220 0 0 {name=x10}
|
||||
C {plot_manipulation.sym} 160 -180 0 0 {name=x11}
|
||||
C {logic_test.sym} 160 -140 0 0 {name=x12}
|
||||
C {simulate_ff.sym} 160 -100 0 0 {name=x13}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@A @@B @VGND @VNB @VPB @VPWR @@X @prefix\\\\and2_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
|
||||
function2="0 1 &"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -60 -20 -30 -20 {}
|
||||
L 4 -60 20 -30 20 {}
|
||||
L 4 -30 -30 -30 30 {}
|
||||
L 4 -30 30 5 30 {}
|
||||
L 4 -30 -30 5 -30 {}
|
||||
L 4 35 0 60 0 {}
|
||||
B 5 -62.5 -22.5 -57.5 -17.5 {name=A dir=in propagate_to=2 }
|
||||
B 5 -62.5 17.5 -57.5 22.5 {name=B dir=in propagate_to=2 }
|
||||
B 5 57.5 -2.5 62.5 2.5 {name=X dir=out }
|
||||
A 4 5 0 30 270 180 {}
|
||||
T {@name} -28.75 -5 0 0 0.2 0.2 {}
|
||||
T {@symname} -25 -45 0 0 0.2 0.2 {}
|
||||
T {A} -55 -34 0 0 0.2 0.2 {}
|
||||
T {B} -55 6 0 0 0.2 0.2 {}
|
||||
T {X} 55 -14 0 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@A @@B @@C @VGND @VNB @VPB @VPWR @@X @prefix\\\\and3_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function3="0 1 2 & &"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -60 -40 -40 -40 {}
|
||||
L 4 -60 0 -30 0 {}
|
||||
L 4 -30 -30 -30 30 {}
|
||||
L 4 -30 30 5 30 {}
|
||||
L 4 -30 -30 5 -30 {}
|
||||
L 4 35 0 60 0 {}
|
||||
L 4 -60 40 -40 40 {}
|
||||
L 4 -40 20 -40 40 {}
|
||||
L 4 -40 20 -30 20 {}
|
||||
L 4 -40 -40 -40 -20 {}
|
||||
L 4 -40 -20 -30 -20 {}
|
||||
B 5 -62.5 -42.5 -57.5 -37.5 {name=A dir=in propagate_to=3 }
|
||||
B 5 -62.5 -2.5 -57.5 2.5 {name=B dir=in propagate_to=3 }
|
||||
B 5 -62.5 37.5 -57.5 42.5 {name=C dir=in propagate_to=3 }
|
||||
B 5 57.5 -2.5 62.5 2.5 {name=X dir=out }
|
||||
A 4 5 0 30 270 180 {}
|
||||
T {@name} -28.75 -5 0 0 0.2 0.2 {}
|
||||
T {@symname} -25 -45 0 0 0.2 0.2 {}
|
||||
T {A} -55 -54 0 0 0.2 0.2 {}
|
||||
T {B} -55 -14 0 0 0.2 0.2 {}
|
||||
T {X} 55 -14 0 1 0.2 0.2 {}
|
||||
T {C} -55 26 0 0 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@A @@B @@C @@D @VGND @VNB @VPB @VPWR @@X @prefix\\\\and4_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function4="0 1 2 3 & & &"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -60 -60 -40 -60 {}
|
||||
L 4 -60 -20 -45 -20 {}
|
||||
L 4 -30 -30 -30 30 {}
|
||||
L 4 -30 30 5 30 {}
|
||||
L 4 -30 -30 5 -30 {}
|
||||
L 4 35 0 60 0 {}
|
||||
L 4 -60 60 -40 60 {}
|
||||
L 4 -40 25 -40 60 {}
|
||||
L 4 -40 25 -30 25 {}
|
||||
L 4 -40 -60 -40 -25 {}
|
||||
L 4 -40 -25 -30 -25 {}
|
||||
L 4 -60 20 -45 20 {}
|
||||
L 4 -45 10 -45 20 {}
|
||||
L 4 -45 10 -30 10 {}
|
||||
L 4 -45 -20 -45 -10 {}
|
||||
L 4 -45 -10 -30 -10 {}
|
||||
B 5 -62.5 -62.5 -57.5 -57.5 {name=A dir=in propagate_to=4 }
|
||||
B 5 -62.5 -22.5 -57.5 -17.5 {name=B dir=in propagate_to=4 }
|
||||
B 5 -62.5 17.5 -57.5 22.5 {name=C dir=in propagate_to=4 }
|
||||
B 5 -62.5 57.5 -57.5 62.5 {name=D dir=in propagate_to=4 }
|
||||
B 5 57.5 -2.5 62.5 2.5 {name=X dir=out }
|
||||
A 4 5 0 30 270 180 {}
|
||||
T {D} -55 46 0 0 0.2 0.2 {}
|
||||
T {@name} -28.75 -5 0 0 0.2 0.2 {}
|
||||
T {@symname} -25 -45 0 0 0.2 0.2 {}
|
||||
T {A} -55 -74 0 0 0.2 0.2 {}
|
||||
T {B} -55 -34 0 0 0.2 0.2 {}
|
||||
T {X} 55 -14 0 1 0.2 0.2 {}
|
||||
T {C} -55 6 0 0 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@CLK @@D @@RESET_B @VGND @VNB @VPB @VPWR @@Q @@Q_N @prefix\\\\dfrbp_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -70 -30 70 -30 {}
|
||||
L 4 -70 30 70 30 {}
|
||||
L 4 -70 -30 -70 30 {}
|
||||
L 4 70 -30 70 30 {}
|
||||
L 4 -90 -20 -70 -20 {}
|
||||
L 4 -90 0 -70 0 {}
|
||||
L 4 -90 20 -70 20 {}
|
||||
L 4 70 -20 90 -20 {}
|
||||
L 4 70 0 90 0 {}
|
||||
B 5 -92.5 -22.5 -87.5 -17.5 {name=CLK dir=in }
|
||||
B 5 -92.5 -2.5 -87.5 2.5 {name=D dir=in }
|
||||
B 5 -92.5 17.5 -87.5 22.5 {name=RESET_B dir=in }
|
||||
B 5 87.5 -22.5 92.5 -17.5 {name=Q dir=out }
|
||||
B 5 87.5 -2.5 92.5 2.5 {name=Q_N dir=out }
|
||||
T {@symname} 0 -6 0 0 0.3 0.3 {hcenter=true}
|
||||
T {@name} 75 -42 0 0 0.2 0.2 {}
|
||||
T {CLK} -65 -24 0 0 0.2 0.2 {}
|
||||
T {D} -65 -4 0 0 0.2 0.2 {}
|
||||
T {RESET_B} -65 16 0 0 0.2 0.2 {}
|
||||
T {Q} 65 -24 0 1 0.2 0.2 {}
|
||||
T {Q_N} 65 -4 0 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=stdcell
|
||||
format="@name @@CLK @@D @@RESET_B @VGND @VNB @VPB @VPWR @@Q @prefix\\\\dfrtp_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function3="1 0 2 & & 0 ~ 2 3 & & |"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -70 -30 70 -30 {}
|
||||
L 4 -70 30 70 30 {}
|
||||
L 4 -70 -30 -70 30 {}
|
||||
L 4 70 -30 70 30 {}
|
||||
L 4 -90 -20 -70 -20 {}
|
||||
L 4 -90 0 -70 0 {}
|
||||
L 4 -90 20 -70 20 {}
|
||||
L 4 70 -20 90 -20 {}
|
||||
B 5 -92.5 -22.5 -87.5 -17.5 {name=CLK dir=in
|
||||
propagate_to=3 clock=1}
|
||||
B 5 -92.5 -2.5 -87.5 2.5 {name=D dir=in }
|
||||
B 5 -92.5 17.5 -87.5 22.5 {name=RESET_B dir=in
|
||||
propagate_to=3
|
||||
clock=2}
|
||||
B 5 87.5 -22.5 92.5 -17.5 {name=Q dir=out }
|
||||
T {@symname} 0 -6 0 0 0.3 0.3 {hcenter=true}
|
||||
T {@name} 75 -42 0 0 0.2 0.2 {}
|
||||
T {CLK} -65 -24 0 0 0.2 0.2 {}
|
||||
T {D} -65 -4 0 0 0.2 0.2 {}
|
||||
T {RESET_B} -65 16 0 0 0.2 0.2 {}
|
||||
T {Q} 65 -24 0 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@D @@GATE_N @@RESET_B @VGND @VNB @VPB @VPWR @@Q @prefix\\\\dlrtn_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function3="0 1 ~ 2 & & 1 2 3 & & |"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -70 -30 70 -30 {}
|
||||
L 4 -70 30 70 30 {}
|
||||
L 4 -70 -30 -70 30 {}
|
||||
L 4 70 -30 70 30 {}
|
||||
L 4 -90 -20 -70 -20 {}
|
||||
L 4 -90 0 -70 0 {}
|
||||
L 4 -90 20 -70 20 {}
|
||||
L 4 70 -20 90 -20 {}
|
||||
B 5 -92.5 -22.5 -87.5 -17.5 {name=D dir=in
|
||||
propagate_to=3}
|
||||
B 5 -92.5 -2.5 -87.5 2.5 {name=GATE_N dir=in
|
||||
propagate_to=3}
|
||||
B 5 -92.5 17.5 -87.5 22.5 {name=RESET_B dir=in }
|
||||
B 5 87.5 -22.5 92.5 -17.5 {name=Q dir=out }
|
||||
T {@symname} 20 -6 0 0 0.3 0.3 {hcenter=true}
|
||||
T {@name} 75 -42 0 0 0.2 0.2 {}
|
||||
T {D} -65 -24 0 0 0.2 0.2 {}
|
||||
T {GATE_N} -65 -4 0 0 0.2 0.2 {}
|
||||
T {RESET_B} -65 16 0 0 0.2 0.2 {}
|
||||
T {Q} 65 -24 0 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@D @@GATE @@RESET_B @VGND @VNB @VPB @VPWR @@Q @prefix\\\\dlrtp_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function3="0 1 2 & & 1 ~ 2 3 & & |"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -70 -30 70 -30 {}
|
||||
L 4 -70 30 70 30 {}
|
||||
L 4 -70 -30 -70 30 {}
|
||||
L 4 70 -30 70 30 {}
|
||||
L 4 -90 -20 -70 -20 {}
|
||||
L 4 -90 0 -70 0 {}
|
||||
L 4 -90 20 -70 20 {}
|
||||
L 4 70 -20 90 -20 {}
|
||||
B 5 -92.5 -22.5 -87.5 -17.5 {name=D dir=in
|
||||
propagate_to=3}
|
||||
B 5 -92.5 -2.5 -87.5 2.5 {name=GATE dir=in
|
||||
propagate_to=3}
|
||||
B 5 -92.5 17.5 -87.5 22.5 {name=RESET_B dir=in }
|
||||
B 5 87.5 -22.5 92.5 -17.5 {name=Q dir=out }
|
||||
T {@symname} 0 -6 0 0 0.3 0.3 {hcenter=true}
|
||||
T {@name} 75 -42 0 0 0.2 0.2 {}
|
||||
T {D} -65 -24 0 0 0.2 0.2 {}
|
||||
T {GATE} -65 -4 0 0 0.2 0.2 {}
|
||||
T {RESET_B} -65 16 0 0 0.2 0.2 {}
|
||||
T {Q} 65 -24 0 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=label
|
||||
format="*.alias @lab"
|
||||
template="name=l1 sig_type=std_logic lab=xxx text=yyy"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
B 5 -1.25 -1.25 1.25 1.25 {name=p dir=in}
|
||||
T {@text} -7.5 -8.125 0 1 2 2 {}
|
||||
|
|
@ -4,16 +4,20 @@ K {}
|
|||
V {}
|
||||
S {}
|
||||
E {}
|
||||
B 1 160 -3040 6800 -2320 {}
|
||||
P 4 7 920 -960 110 -960 110 -1040 100 -1040 110 -1080 120 -1040 110 -1040 {}
|
||||
P 4 9 1320 -640 920 -640 920 -460 900 -460 920 -420 940 -460 920 -460 920 -640 1320 -640 {}
|
||||
T {Ctrl-Click here to start a simulation. Xschem will be only partially responsive
|
||||
during simulation.
|
||||
T {This example shows Xschem (very simple) simulation abilities
|
||||
Ctrl-Click here to start a simulation.
|
||||
Xschem will be only partially responsive during simulation.
|
||||
Simulation will terminate automatically after 30 iterations
|
||||
Otherwise go to Simulation ->Force stop tcl scripts} 1390 -700 0 0 2 2 {}
|
||||
Otherwise go to Simulation ->Forced stop tcl scripts} 1340 -740 0 0 2 2 {}
|
||||
T {Clicking an input net and pressing '0', '1' or '2' will set the net to logic state 0,1, X respectively} 960 -1030 0 0 2 2 {}
|
||||
T {9 Flip Flop Linear Feedback Shift Register} 1660 -3840 0 0 3 3 {layer=11}
|
||||
T {Example of multi-output gates
|
||||
Full Adder} 6170 -910 0 0 1 1 {}
|
||||
T {9 Flip Flop Linear Feedback Shift Register} 1980 -3440 0 0 3 3 {}
|
||||
T {Cyan: Uninitialized or unknown (X)} 4930 -540 0 0 1.5 1.5 {layer=1}
|
||||
T {Signal colors:} 4850 -640 0 0 1.5 1.5 {}
|
||||
T {Blue: Logic level low (0)} 4930 -440 0 0 1.5 1.5 {layer=12}
|
||||
T {Red: Logic level high (1)} 4930 -340 0 0 1.5 1.5 {layer=5}
|
||||
N 480 -1900 480 -1870 { lab=#net1}
|
||||
N 360 -1970 480 -1900 { lab=#net1}
|
||||
N 360 -2000 360 -1970 { lab=#net1}
|
||||
|
|
@ -439,95 +443,15 @@ N 4380 -1400 4380 -1390 { lab=#net30}
|
|||
N 5050 -1400 5050 -1390 { lab=#net35}
|
||||
N 5720 -1400 5720 -1390 { lab=#net40}
|
||||
N 6400 -1400 6400 -1390 { lab=#net45}
|
||||
N 180 -3380 180 -2420 { lab=q1}
|
||||
N 180 -3380 420 -2980 { lab=q1}
|
||||
N 420 -2980 660 -3380 { lab=q1}
|
||||
N 660 -3380 660 -2420 { lab=q1}
|
||||
N 840 -2900 840 -2420 { lab=q2}
|
||||
N 1500 -2900 1500 -2420 { lab=q3}
|
||||
N 4860 -3380 4860 -2420 { lab=q7}
|
||||
N 4860 -3380 5100 -2980 { lab=q7}
|
||||
N 5100 -2980 5340 -3380 { lab=q7}
|
||||
N 5340 -3380 5340 -2420 { lab=q7}
|
||||
N 5520 -2700 5520 -2420 { lab=q8}
|
||||
N 6000 -2700 6000 -2420 { lab=q8}
|
||||
N 2820 -3380 3060 -2880 { lab=q5}
|
||||
N 3060 -2880 3300 -3380 { lab=q5}
|
||||
N 840 -3380 1320 -3380 { lab=q2}
|
||||
N 840 -2900 1200 -2900 { lab=q2}
|
||||
N 840 -2420 1320 -2420 { lab=q2}
|
||||
N 1500 -3380 1820 -3380 { lab=q3}
|
||||
N 1820 -3380 1920 -3300 { lab=q3}
|
||||
N 1920 -3300 1980 -3220 { lab=q3}
|
||||
N 1980 -3220 1980 -3060 { lab=q3}
|
||||
N 1820 -2900 1920 -2980 { lab=q3}
|
||||
N 1920 -2980 1980 -3060 { lab=q3}
|
||||
N 1700 -2900 1820 -2900 { lab=q3}
|
||||
N 1700 -2900 1980 -2420 { lab=q3}
|
||||
N 2160 -2900 2160 -2420 { lab=q4}
|
||||
N 2160 -3380 2480 -3380 { lab=q4}
|
||||
N 2480 -3380 2580 -3300 { lab=q4}
|
||||
N 2580 -3300 2640 -3220 { lab=q4}
|
||||
N 2640 -3220 2640 -3060 { lab=q4}
|
||||
N 2480 -2900 2580 -2980 { lab=q4}
|
||||
N 2580 -2980 2640 -3060 { lab=q4}
|
||||
N 2360 -2900 2480 -2900 { lab=q4}
|
||||
N 2360 -2900 2640 -2420 { lab=q4}
|
||||
N 3060 -2880 3060 -2420 { lab=q5}
|
||||
N 4440 -2900 4680 -2420 { lab=q6}
|
||||
N 5520 -3080 5680 -3380 { lab=q8}
|
||||
N 5680 -3380 5840 -3380 { lab=q8}
|
||||
N 5840 -3380 6000 -3080 { lab=q8}
|
||||
N 5520 -2700 6000 -2700 { lab=q8}
|
||||
N 6560 -3380 6660 -3280 { lab=q9}
|
||||
N 6280 -3380 6560 -3380 { lab=q9}
|
||||
N 6180 -3280 6280 -3380 { lab=q9}
|
||||
N 6280 -2900 6560 -2900 { lab=q9}
|
||||
N 6180 -3000 6280 -2900 { lab=q9}
|
||||
N 6180 -3280 6180 -3000 { lab=q9}
|
||||
N 6560 -2900 6660 -2800 { lab=q9}
|
||||
N 6660 -2800 6660 -2520 { lab=q9}
|
||||
N 6560 -2420 6660 -2520 { lab=q9}
|
||||
N 6280 -2420 6560 -2420 { lab=q9}
|
||||
N 6180 -2520 6280 -2420 { lab=q9}
|
||||
N 4440 -2900 4680 -3380 { lab=q6}
|
||||
N 4200 -2420 4440 -2900 { lab=q6}
|
||||
N 5990 -2250 6760 -2250 { lab=q9}
|
||||
N 6760 -2250 6760 -1760 { lab=q9}
|
||||
N 6130 -2210 6130 -1760 { lab=q8}
|
||||
N 5990 -2210 6130 -2210 { lab=q8}
|
||||
N 120 -2230 5220 -2230 { lab=#net6}
|
||||
N 120 -2230 120 -1350 { lab=#net6}
|
||||
N 840 -3380 840 -2900 { lab=q2}
|
||||
N 1500 -3380 1500 -2900 { lab=q3}
|
||||
N 1500 -2900 1700 -2900 { lab=q3}
|
||||
N 2160 -3380 2160 -2900 { lab=q4}
|
||||
N 2160 -2900 2360 -2900 { lab=q4}
|
||||
N 5520 -3080 5520 -2700 { lab=q8}
|
||||
N 6000 -3080 6000 -2700 { lab=q8}
|
||||
N 4200 -3380 4440 -2900 { lab=q6}
|
||||
N 6750 -1760 6760 -1760 { lab=q9}
|
||||
N 6070 -1760 6130 -1760 { lab=q8}
|
||||
N 5300 -2230 5870 -2230 { lab=#net47}
|
||||
N 6410 -240 6410 -190 { lab=#net48}
|
||||
N 6330 -240 6410 -240 { lab=#net48}
|
||||
N 6290 -240 6330 -240 { lab=#net48}
|
||||
N 6290 -280 6290 -240 { lab=#net48}
|
||||
N 6410 -410 6410 -360 { lab=#net49}
|
||||
N 6330 -410 6410 -410 { lab=#net49}
|
||||
N 6290 -410 6330 -410 { lab=#net49}
|
||||
N 6290 -450 6290 -410 { lab=#net49}
|
||||
N 6410 -580 6410 -530 { lab=#net50}
|
||||
N 6330 -580 6410 -580 { lab=#net50}
|
||||
N 6290 -580 6330 -580 { lab=#net50}
|
||||
N 6290 -620 6290 -580 { lab=#net50}
|
||||
N 6410 -110 6490 -110 { lab=S0}
|
||||
N 6410 -280 6490 -280 { lab=S1}
|
||||
N 6410 -620 6490 -620 { lab=S3}
|
||||
N 6410 -700 6430 -700 { lab=#net51}
|
||||
N 6410 -450 6490 -450 { lab=S2}
|
||||
N 6250 -110 6290 -110 { lab=VSS}
|
||||
N 5740 -300 5820 -300 { lab=Q_FF}
|
||||
C {nand2_1.sym} 420 -2020 0 0 {name=x45 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand2_1.sym} 650 -1760 0 0 {name=x49 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand3_1.sym} 420 -1870 0 0 {name=x51 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
|
|
@ -584,15 +508,6 @@ C {nand3_1.sym} 6460 -1870 0 0 {name=x95 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR pre
|
|||
C {nand3_1.sym} 6460 -1500 0 0 {name=x96 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand3_1.sym} 6690 -1610 0 0 {name=x97 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand3_1.sym} 6460 -1350 0 0 {name=x98 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 180 -2420 0 0 {name=l2 sig_type=std_logic lab=q1}
|
||||
C {lab_pin.sym} 840 -2420 0 0 {name=l3 sig_type=std_logic lab=q2}
|
||||
C {lab_pin.sym} 1500 -2420 0 0 {name=l4 sig_type=std_logic lab=q3}
|
||||
C {lab_pin.sym} 2160 -2420 0 0 {name=l5 sig_type=std_logic lab=q4}
|
||||
C {lab_pin.sym} 3060 -2420 0 0 {name=l6 sig_type=std_logic lab=q5}
|
||||
C {lab_pin.sym} 4200 -2420 0 0 {name=l7 sig_type=std_logic lab=q6}
|
||||
C {lab_pin.sym} 4860 -2420 0 0 {name=l8 sig_type=std_logic lab=q7}
|
||||
C {lab_pin.sym} 5520 -2420 0 0 {name=l9 sig_type=std_logic lab=q8}
|
||||
C {lab_pin.sym} 6280 -2420 0 0 {name=l28 sig_type=std_logic lab=q9}
|
||||
C {lab_pin.sym} 770 -1760 0 1 {name=l29 sig_type=std_logic lab=q1}
|
||||
C {lab_pin.sym} 1430 -1760 0 1 {name=l30 sig_type=std_logic lab=q2}
|
||||
C {lab_pin.sym} 2090 -1760 0 1 {name=l31 sig_type=std_logic lab=q3}
|
||||
|
|
@ -635,26 +550,12 @@ tclcommand=" set count 0
|
|||
\}
|
||||
"
|
||||
}
|
||||
C {fa_1.sym} 6350 -660 0 0 {name=x7 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {fa_1.sym} 6350 -490 0 0 {name=x8 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {fa_1.sym} 6350 -320 0 0 {name=x9 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {fa_1.sym} 6350 -150 0 0 {name=x10 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 6290 -700 0 0 {name=l10 sig_type=std_logic lab=q1}
|
||||
C {lab_pin.sym} 6290 -660 0 0 {name=l11 sig_type=std_logic lab=q2}
|
||||
C {lab_pin.sym} 6290 -490 0 0 {name=l12 sig_type=std_logic lab=q4}
|
||||
C {lab_pin.sym} 6290 -530 0 0 {name=l13 sig_type=std_logic lab=q3}
|
||||
C {lab_pin.sym} 6290 -320 0 0 {name=l14 sig_type=std_logic lab=q6}
|
||||
C {lab_pin.sym} 6290 -360 0 0 {name=l15 sig_type=std_logic lab=q5}
|
||||
C {lab_pin.sym} 6290 -150 0 0 {name=l16 sig_type=std_logic lab=q8}
|
||||
C {lab_pin.sym} 6290 -190 0 0 {name=l17 sig_type=std_logic lab=q7}
|
||||
C {noconn.sym} 6430 -700 2 0 {name=l18}
|
||||
C {lab_pin.sym} 6490 -620 0 1 {name=l19 sig_type=std_logic lab=S3}
|
||||
C {lab_pin.sym} 6490 -450 0 1 {name=l20 sig_type=std_logic lab=S2}
|
||||
C {lab_pin.sym} 6490 -280 0 1 {name=l21 sig_type=std_logic lab=S1}
|
||||
C {lab_pin.sym} 6490 -110 0 1 {name=l22 sig_type=std_logic lab=S0}
|
||||
C {lab_pin.sym} 6250 -110 0 0 {name=l23 sig_type=std_logic lab=VSS}
|
||||
C {lab_pin.sym} 5560 -260 0 0 {name=l1 sig_type=std_logic lab=CLEAR_}
|
||||
C {lab_pin.sym} 5560 -300 0 0 {name=l24 sig_type=std_logic lab=CLK}
|
||||
C {lab_pin.sym} 5820 -300 0 1 {name=l27 sig_type=std_logic lab=Q_FF}
|
||||
C {dfrtp_1.sym} 5650 -280 0 0 {name=x2 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 5560 -280 0 0 {name=l26 sig_type=std_logic lab=DATA}
|
||||
C {giant_label2.sym} 240 -3040 0 0 {name=l1 sig_type=std_logic lab=q1 text=M}
|
||||
C {giant_label2.sym} 880 -3040 0 0 {name=l2 sig_type=std_logic lab=q2 text=E}
|
||||
C {giant_label2.sym} 1520 -3040 0 0 {name=l3 sig_type=std_logic lab=q3 text=R}
|
||||
C {giant_label2.sym} 2160 -3040 0 0 {name=l4 sig_type=std_logic lab=q4 text=R}
|
||||
C {giant_label2.sym} 2800 -3040 0 0 {name=l5 sig_type=std_logic lab=q5 text=Y}
|
||||
C {giant_label2.sym} 4240 -3040 0 0 {name=l6 sig_type=std_logic lab=q6 text=X}
|
||||
C {giant_label2.sym} 4880 -3040 0 0 {name=l7 sig_type=std_logic lab=q7 text=M}
|
||||
C {giant_label2.sym} 5520 -3040 0 0 {name=l8 sig_type=std_logic lab=q8 text=A}
|
||||
C {giant_label2.sym} 6160 -3040 0 0 {name=l9 sig_type=std_logic lab=q9 text=S}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@A @@B @@C @@D @VGND @VNB @VPB @VPWR @@Y @prefix\\\\nand4_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function4="0 1 2 3 & & & ~"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -60 -60 -40 -60 {}
|
||||
L 4 -30 -30 -30 30 {}
|
||||
L 4 -30 30 5 30 {}
|
||||
L 4 -30 -30 5 -30 {}
|
||||
L 4 45 0 60 0 {}
|
||||
L 4 -60 20 -45 20 {}
|
||||
L 4 -45 10 -45 20 {}
|
||||
L 4 -45 10 -30 10 {}
|
||||
L 4 -40 -60 -40 -25 {}
|
||||
L 4 -40 -25 -30 -25 {}
|
||||
L 4 -60 -20 -45 -20 {}
|
||||
L 4 -45 -20 -45 -10 {}
|
||||
L 4 -45 -10 -30 -10 {}
|
||||
L 4 -60 60 -40 60 {}
|
||||
L 4 -40 25 -40 60 {}
|
||||
L 4 -40 25 -30 25 {}
|
||||
B 5 -62.5 -62.5 -57.5 -57.5 {name=A dir=in propagate_to=4 }
|
||||
B 5 -62.5 -22.5 -57.5 -17.5 {name=B dir=in propagate_to=4 }
|
||||
B 5 -62.5 17.5 -57.5 22.5 {name=C dir=in propagate_to=4 }
|
||||
B 5 -62.5 57.5 -57.5 62.5 {name=D dir=in propagate_to=4 }
|
||||
B 5 57.5 -2.5 62.5 2.5 {name=Y dir=out }
|
||||
A 4 5 0 30 270 180 {}
|
||||
A 4 40 0 5 0 360 {}
|
||||
T {@name} -28.75 -5 0 0 0.2 0.2 {}
|
||||
T {@symname} -25 -45 0 0 0.2 0.2 {}
|
||||
T {A} -55 -74 0 0 0.2 0.2 {}
|
||||
T {B} -55 -34 0 0 0.2 0.2 {}
|
||||
T {Y} 55 -14 0 1 0.2 0.2 {}
|
||||
T {C} -55 6 0 0 0.2 0.2 {}
|
||||
T {D} -55 46 0 0 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@A @@B @@C @@D @VGND @VNB @VPB @VPWR @@Y @prefix\\\\nor4_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function4="0 1 2 3 | | | ~"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 45 0 60 0 {}
|
||||
L 4 -30 -30 -15 -30 {}
|
||||
L 4 -30 30 -15 30 {}
|
||||
L 4 -60 -60 -40 -60 {}
|
||||
L 4 -60 20 -45 20 {}
|
||||
L 4 -45 10 -45 20 {}
|
||||
L 4 -45 10 -22.1875 10 {}
|
||||
L 4 -40 -60 -40 -25 {}
|
||||
L 4 -40 -25 -27.5 -25 {}
|
||||
L 4 -60 -20 -45 -20 {}
|
||||
L 4 -45 -20 -45 -10 {}
|
||||
L 4 -45 -10 -22.1875 -10 {}
|
||||
L 4 -60 60 -40 60 {}
|
||||
L 4 -40 25 -40 60 {}
|
||||
L 4 -40 25 -27.5 25 {}
|
||||
B 5 -62.5 -62.5 -57.5 -57.5 {name=A dir=in propagate_to=4 }
|
||||
B 5 -62.5 -22.5 -57.5 -17.5 {name=B dir=in propagate_to=4 }
|
||||
B 5 -62.5 17.5 -57.5 22.5 {name=C dir=in propagate_to=4 }
|
||||
B 5 -62.5 57.5 -57.5 62.5 {name=D dir=in propagate_to=4 }
|
||||
B 5 57.5 -2.5 62.5 2.5 {name=Y dir=out }
|
||||
A 4 40 0 5 0 360 {}
|
||||
A 4 -77.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {}
|
||||
A 4 -21.07142857142857 36.78571428571431 67.06112046149408 33.26691584358777 51.53865524867743 {}
|
||||
A 4 -21.07142857142857 -36.78571428571431 67.06112046149408 275.1944289077348 51.53865524867743 {}
|
||||
T {Y} 55 -14 0 1 0.2 0.2 {}
|
||||
T {@name} -16.25 -5 0 0 0.2 0.2 {}
|
||||
T {@symname} -25 -45 0 0 0.2 0.2 {}
|
||||
T {A} -55 -74 0 0 0.2 0.2 {}
|
||||
T {B} -55 -34 0 0 0.2 0.2 {}
|
||||
T {C} -55 6 0 0 0.2 0.2 {}
|
||||
T {D} -55 46 0 0 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @@A @@B @@C @@D @VGND @VNB @VPB @VPWR @@X @prefix\\\\or4_1"
|
||||
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
|
||||
extra="VGND VNB VPB VPWR prefix"
|
||||
highlight=true
|
||||
function4="0 1 2 3 | | |"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 35 0 60 0 {}
|
||||
L 4 -30 -30 -15 -30 {}
|
||||
L 4 -30 30 -15 30 {}
|
||||
L 4 -60 -60 -40 -60 {}
|
||||
L 4 -60 20 -45 20 {}
|
||||
L 4 -45 10 -45 20 {}
|
||||
L 4 -45 10 -22.1875 10 {}
|
||||
L 4 -40 -60 -40 -25 {}
|
||||
L 4 -40 -25 -27.5 -25 {}
|
||||
L 4 -60 -20 -45 -20 {}
|
||||
L 4 -45 -20 -45 -10 {}
|
||||
L 4 -45 -10 -22.1875 -10 {}
|
||||
L 4 -60 60 -40 60 {}
|
||||
L 4 -40 25 -40 60 {}
|
||||
L 4 -40 25 -27.5 25 {}
|
||||
B 5 -62.5 -62.5 -57.5 -57.5 {name=A dir=in propagate_to=4 }
|
||||
B 5 -62.5 -22.5 -57.5 -17.5 {name=B dir=in propagate_to=4 }
|
||||
B 5 -62.5 17.5 -57.5 22.5 {name=C dir=in propagate_to=4 }
|
||||
B 5 -62.5 57.5 -57.5 62.5 {name=D dir=in propagate_to=4 }
|
||||
B 5 57.5 -2.5 62.5 2.5 {name=X dir=out }
|
||||
A 4 -77.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {}
|
||||
A 4 -21.07142857142857 36.78571428571431 67.06112046149408 33.26691584358777 51.53865524867743 {}
|
||||
A 4 -21.07142857142857 -36.78571428571431 67.06112046149408 275.1944289077348 51.53865524867743 {}
|
||||
T {X} 55 -14 0 1 0.2 0.2 {}
|
||||
T {@name} -16.25 -5 0 0 0.2 0.2 {}
|
||||
T {@symname} -25 -45 0 0 0.2 0.2 {}
|
||||
T {A} -55 -74 0 0 0.2 0.2 {}
|
||||
T {B} -55 -34 0 0 0.2 0.2 {}
|
||||
T {C} -55 6 0 0 0.2 0.2 {}
|
||||
T {D} -55 46 0 0 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {type=label
|
||||
format="*.alias @lab"
|
||||
template="name=l1 sig_type=std_logic lab=xxx"}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
B 5 -0.3125 29.6875 0.3125 30.3125 {name=p dir=in}
|
||||
P 19 9 0 30 -30 0 -530 0 -560 30 -560 50 -530 80 -30 80 0 50 0 30 {fill=true}
|
||||
|
|
@ -0,0 +1,400 @@
|
|||
v {xschem version=2.9.9 file_version=1.2 }
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 110 -1580 190 -1580 {}
|
||||
L 4 110 -1480 190 -1480 {}
|
||||
L 4 110 -1380 190 -1380 {}
|
||||
L 4 100 -1470 100 -1390 {}
|
||||
L 4 200 -1470 200 -1390 {}
|
||||
L 4 100 -1570 100 -1490 {}
|
||||
L 4 200 -1570 200 -1490 {}
|
||||
B 12 3210 -2700 3930 -1400 {}
|
||||
T {
|
||||
0 1 2 3 4 5 6
|
||||
======================
|
||||
0000 X X X X X X
|
||||
0001 X X
|
||||
0010 X X X X X
|
||||
0011 X X X X X
|
||||
0100 X X X X
|
||||
0101 X X X X X
|
||||
0110 X X X X X X
|
||||
0111 X X X
|
||||
1000 X X X X X X X
|
||||
1001 X X X X X X
|
||||
-HEX (not implemented)-
|
||||
1010 X X X X X X
|
||||
1011 X X X X X
|
||||
1100 X X X X
|
||||
1101 X X X X X
|
||||
1110 X X X X X
|
||||
1111 X X X X
|
||||
} 40 -1340 0 0 0.4 0.4 {font=Monospace}
|
||||
T {0} 140 -1630 0 0 0.8 0.8 {}
|
||||
T {1} 90 -1550 0 1 0.8 0.8 {}
|
||||
T {2} 210 -1550 0 0 0.8 0.8 {}
|
||||
T {3} 140 -1530 0 0 0.8 0.8 {}
|
||||
T {6} 140 -1430 0 0 0.8 0.8 {}
|
||||
T {4} 90 -1450 0 1 0.8 0.8 {}
|
||||
T {5} 210 -1450 0 0 0.8 0.8 {}
|
||||
T {7 Segment Display driver
|
||||
and base-10 counter} 1540 -3130 0 0 2.5 2.5 {}
|
||||
T {Segment 0} 1190 -2880 0 0 1 1 { layer=4}
|
||||
T {Segment 1} 1190 -2400 0 0 1 1 { layer=4}
|
||||
T {Segment 2} 1190 -1920 0 0 1 1 { layer=4}
|
||||
T {Segment 3} 1190 -1520 0 0 1 1 { layer=4}
|
||||
T {Segment 4} 1190 -960 0 0 1 1 { layer=4}
|
||||
T {Segment 5} 1190 -560 0 0 1 1 { layer=4}
|
||||
T {Segment 6} 1190 -240 0 0 1 1 { layer=4}
|
||||
T {This example shows Xschem (very simple) simulation abilities
|
||||
Ctrl-Click to start simulation.
|
||||
Xschem will be only partially responsive during simulation.
|
||||
Will run for 40 iterations.
|
||||
If you need to stop:
|
||||
Simulation -> Forced stop tcl scripts} 1730 -750 0 0 1.5 1.5 {}
|
||||
T {Truth Table} 10 -1730 0 0 1.5 1.5 {layer=4}
|
||||
T {Cyan: Uninitialized or unknown (X)} 3210 -1190 0 0 1.5 1.5 {layer=1}
|
||||
T {Signal colors:} 3130 -1290 0 0 1.5 1.5 {}
|
||||
T {Blue: Logic level low (0)} 3210 -1090 0 0 1.5 1.5 {layer=12}
|
||||
T {Red: Logic level high (1)} 3210 -990 0 0 1.5 1.5 {layer=5}
|
||||
N 1920 -2060 1920 -1980 { lab=#net1}
|
||||
N 1800 -2060 1920 -2060 { lab=#net1}
|
||||
N 1800 -2080 1800 -2060 { lab=#net1}
|
||||
N 1920 -2240 1920 -2160 { lab=#net2}
|
||||
N 1800 -2240 1920 -2240 { lab=#net2}
|
||||
N 1800 -2260 1800 -2240 { lab=#net2}
|
||||
N 1920 -2420 1920 -2340 { lab=#net3}
|
||||
N 1800 -2420 1920 -2420 { lab=#net3}
|
||||
N 1800 -2440 1800 -2420 { lab=#net3}
|
||||
N 2640 -2460 2700 -2460 { lab=B[3]}
|
||||
N 2640 -2560 2640 -2460 { lab=B[3]}
|
||||
N 1730 -2560 2640 -2560 { lab=B[3]}
|
||||
N 1730 -2560 1730 -2520 { lab=B[3]}
|
||||
N 2640 -2280 2700 -2280 { lab=B[2]}
|
||||
N 2640 -2380 2640 -2280 { lab=B[2]}
|
||||
N 1730 -2380 2640 -2380 { lab=B[2]}
|
||||
N 1730 -2380 1730 -2340 { lab=B[2]}
|
||||
N 2640 -2100 2700 -2100 { lab=B[1]}
|
||||
N 2640 -2200 2640 -2100 { lab=B[1]}
|
||||
N 1730 -2200 2640 -2200 { lab=B[1]}
|
||||
N 1730 -2200 1730 -2160 { lab=B[1]}
|
||||
N 2640 -1920 2700 -1920 { lab=B[0]}
|
||||
N 2640 -2020 2640 -1920 { lab=B[0]}
|
||||
N 1730 -2020 2640 -2020 { lab=B[0]}
|
||||
N 1730 -2020 1730 -1980 { lab=B[0]}
|
||||
N 1590 -1990 1590 -1940 { lab=CLEAR_}
|
||||
N 1590 -1940 1800 -1940 { lab=CLEAR_}
|
||||
N 1670 -2120 1670 -1900 { lab=#net4}
|
||||
N 1670 -2120 1800 -2120 { lab=#net4}
|
||||
N 1670 -2300 1670 -2120 { lab=#net4}
|
||||
N 1670 -2300 1800 -2300 { lab=#net4}
|
||||
N 1670 -2480 1670 -2300 { lab=#net4}
|
||||
N 1670 -2480 1800 -2480 { lab=#net4}
|
||||
N 1670 -1900 1800 -1900 { lab=#net4}
|
||||
N 1920 -2520 1940 -2520 { lab=#net5}
|
||||
N 1730 -1980 1800 -1980 { lab=B[0]}
|
||||
N 1730 -2160 1800 -2160 { lab=B[1]}
|
||||
N 1730 -2340 1800 -2340 { lab=B[2]}
|
||||
N 1730 -2520 1800 -2520 { lab=B[3]}
|
||||
N 1730 -1830 1900 -1830 { lab=BNEXT[3]}
|
||||
N 1830 -1790 1900 -1790 { lab=#net6}
|
||||
N 1730 -1790 1750 -1790 { lab=BNEXT[2]}
|
||||
N 1730 -1750 1900 -1750 { lab=BNEXT[1]}
|
||||
N 1730 -1710 1750 -1710 { lab=BNEXT[0]}
|
||||
N 1830 -1710 1900 -1710 { lab=#net7}
|
||||
N 2620 -2460 2640 -2460 { lab=B[3]}
|
||||
N 2620 -2280 2640 -2280 { lab=B[2]}
|
||||
N 2620 -2100 2640 -2100 { lab=B[1]}
|
||||
N 2620 -1920 2640 -1920 { lab=B[0]}
|
||||
N 520 -3140 520 -10 { lab=B[3]}
|
||||
N 520 -3140 550 -3140 { lab=B[3]}
|
||||
N 600 -3140 630 -3140 { lab=B[2]}
|
||||
N 680 -3140 710 -3140 { lab=B[1]}
|
||||
N 760 -3140 790 -3140 { lab=B[0]}
|
||||
N 550 -640 880 -640 { lab=#net8}
|
||||
N 630 -600 880 -600 { lab=#net9}
|
||||
N 680 -560 880 -560 { lab=B[1]}
|
||||
N 790 -520 880 -520 { lab=#net10}
|
||||
N 1000 -580 1230 -580 { lab=S[5]}
|
||||
N 520 -3160 520 -3140 { lab=B[3]}
|
||||
N 600 -3160 600 -3140 { lab=B[2]}
|
||||
N 680 -3160 680 -3140 { lab=B[1]}
|
||||
N 760 -3160 760 -3140 { lab=B[0]}
|
||||
N 550 -3040 880 -3040 { lab=#net8}
|
||||
N 630 -3000 880 -3000 { lab=#net9}
|
||||
N 710 -2960 880 -2960 { lab=#net11}
|
||||
N 760 -2920 880 -2920 { lab=B[0]}
|
||||
N 550 -2880 880 -2880 { lab=#net8}
|
||||
N 600 -2840 880 -2840 { lab=B[2]}
|
||||
N 710 -2800 880 -2800 { lab=#net11}
|
||||
N 790 -2760 880 -2760 { lab=#net10}
|
||||
N 1020 -2920 1050 -2920 { lab=#net12}
|
||||
N 1020 -2980 1020 -2920 { lab=#net12}
|
||||
N 1000 -2980 1020 -2980 { lab=#net12}
|
||||
N 1020 -2880 1050 -2880 { lab=#net13}
|
||||
N 1020 -2880 1020 -2820 { lab=#net13}
|
||||
N 1000 -2820 1020 -2820 { lab=#net13}
|
||||
N 1170 -2900 1230 -2900 { lab=S[0]}
|
||||
N 550 -2560 880 -2560 { lab=#net8}
|
||||
N 630 -2520 880 -2520 { lab=#net9}
|
||||
N 680 -2480 880 -2480 { lab=B[1]}
|
||||
N 790 -2440 880 -2440 { lab=#net10}
|
||||
N 550 -2400 880 -2400 { lab=#net8}
|
||||
N 630 -2360 880 -2360 { lab=#net9}
|
||||
N 680 -2320 880 -2320 { lab=B[1]}
|
||||
N 760 -2280 880 -2280 { lab=B[0]}
|
||||
N 550 -2240 880 -2240 { lab=#net8}
|
||||
N 600 -2200 880 -2200 { lab=B[2]}
|
||||
N 680 -2160 880 -2160 { lab=B[1]}
|
||||
N 760 -2120 880 -2120 { lab=B[0]}
|
||||
N 550 -2720 880 -2720 { lab=#net8}
|
||||
N 630 -2680 880 -2680 { lab=#net9}
|
||||
N 710 -2640 880 -2640 { lab=#net11}
|
||||
N 760 -2600 880 -2600 { lab=B[0]}
|
||||
N 1000 -2660 1050 -2660 { lab=#net14}
|
||||
N 1000 -2500 1020 -2500 { lab=#net15}
|
||||
N 1000 -2340 1020 -2340 { lab=#net16}
|
||||
N 1000 -2180 1050 -2180 { lab=#net17}
|
||||
N 1050 -2660 1050 -2480 { lab=#net14}
|
||||
N 1020 -2500 1020 -2440 { lab=#net15}
|
||||
N 1020 -2440 1050 -2440 { lab=#net15}
|
||||
N 1020 -2400 1050 -2400 { lab=#net16}
|
||||
N 1020 -2400 1020 -2340 { lab=#net16}
|
||||
N 1050 -2360 1050 -2180 { lab=#net17}
|
||||
N 1170 -2420 1230 -2420 { lab=S[1]}
|
||||
N 550 -2080 880 -2080 { lab=#net8}
|
||||
N 600 -2040 880 -2040 { lab=B[2]}
|
||||
N 710 -2000 880 -2000 { lab=#net11}
|
||||
N 760 -1960 880 -1960 { lab=B[0]}
|
||||
N 550 -1920 880 -1920 { lab=#net8}
|
||||
N 600 -1880 880 -1880 { lab=B[2]}
|
||||
N 680 -1840 880 -1840 { lab=B[1]}
|
||||
N 790 -1800 880 -1800 { lab=#net10}
|
||||
N 1020 -1960 1050 -1960 { lab=#net18}
|
||||
N 1020 -2020 1020 -1960 { lab=#net18}
|
||||
N 1000 -2020 1020 -2020 { lab=#net18}
|
||||
N 1020 -1920 1050 -1920 { lab=#net19}
|
||||
N 1020 -1920 1020 -1860 { lab=#net19}
|
||||
N 1000 -1860 1020 -1860 { lab=#net19}
|
||||
N 1170 -1940 1230 -1940 { lab=S[2]}
|
||||
N 550 -1760 880 -1760 { lab=#net8}
|
||||
N 630 -1720 880 -1720 { lab=#net9}
|
||||
N 710 -1680 880 -1680 { lab=#net11}
|
||||
N 790 -1640 880 -1640 { lab=#net10}
|
||||
N 1000 -1700 1050 -1700 { lab=#net20}
|
||||
N 550 -1600 880 -1600 { lab=#net8}
|
||||
N 630 -1560 880 -1560 { lab=#net9}
|
||||
N 710 -1520 880 -1520 { lab=#net11}
|
||||
N 1000 -1540 1050 -1540 { lab=#net21}
|
||||
N 550 -1440 880 -1440 { lab=#net8}
|
||||
N 600 -1400 880 -1400 { lab=B[2]}
|
||||
N 680 -1360 880 -1360 { lab=B[1]}
|
||||
N 760 -1320 880 -1320 { lab=B[0]}
|
||||
N 1000 -1380 1050 -1380 { lab=#net22}
|
||||
N 1050 -1700 1050 -1580 { lab=#net20}
|
||||
N 1050 -1500 1050 -1380 { lab=#net22}
|
||||
N 550 -3060 550 -10 { lab=#net8}
|
||||
N 630 -3060 630 -10 { lab=#net9}
|
||||
N 710 -3060 710 -10 { lab=#net11}
|
||||
N 760 -3140 760 -10 { lab=B[0]}
|
||||
N 600 -3140 600 -10 { lab=B[2]}
|
||||
N 790 -3060 790 -10 { lab=#net10}
|
||||
N 680 -3140 680 -10 { lab=B[1]}
|
||||
N 760 -1480 880 -1480 { lab=B[0]}
|
||||
N 1170 -1540 1230 -1540 { lab=S[3]}
|
||||
N 550 -1280 880 -1280 { lab=#net8}
|
||||
N 630 -1240 880 -1240 { lab=#net9}
|
||||
N 710 -1200 880 -1200 { lab=#net11}
|
||||
N 790 -1160 880 -1160 { lab=#net10}
|
||||
N 1000 -1220 1050 -1220 { lab=#net23}
|
||||
N 550 -1120 880 -1120 { lab=#net8}
|
||||
N 630 -1080 880 -1080 { lab=#net9}
|
||||
N 680 -1040 880 -1040 { lab=B[1]}
|
||||
N 790 -1000 880 -1000 { lab=#net10}
|
||||
N 1000 -1060 1020 -1060 { lab=#net24}
|
||||
N 550 -960 880 -960 { lab=#net8}
|
||||
N 600 -920 880 -920 { lab=B[2]}
|
||||
N 680 -880 880 -880 { lab=B[1]}
|
||||
N 790 -840 880 -840 { lab=#net10}
|
||||
N 1000 -900 1020 -900 { lab=#net25}
|
||||
N 520 -800 880 -800 { lab=B[3]}
|
||||
N 630 -760 880 -760 { lab=#net9}
|
||||
N 710 -720 880 -720 { lab=#net11}
|
||||
N 790 -680 880 -680 { lab=#net10}
|
||||
N 1000 -740 1050 -740 { lab=#net26}
|
||||
N 1050 -920 1050 -740 { lab=#net26}
|
||||
N 1050 -1220 1050 -1040 { lab=#net23}
|
||||
N 1020 -1000 1050 -1000 { lab=#net24}
|
||||
N 1020 -1060 1020 -1000 { lab=#net24}
|
||||
N 1020 -960 1050 -960 { lab=#net25}
|
||||
N 1020 -960 1020 -900 { lab=#net25}
|
||||
N 1170 -980 1230 -980 { lab=S[4]}
|
||||
N 550 -480 880 -480 { lab=#net8}
|
||||
N 630 -440 880 -440 { lab=#net9}
|
||||
N 710 -400 880 -400 { lab=#net11}
|
||||
N 760 -360 880 -360 { lab=B[0]}
|
||||
N 1000 -420 1050 -420 { lab=#net27}
|
||||
N 550 -320 880 -320 { lab=#net8}
|
||||
N 600 -280 880 -280 { lab=B[2]}
|
||||
N 710 -240 880 -240 { lab=#net11}
|
||||
N 1000 -260 1050 -260 { lab=#net28}
|
||||
N 550 -160 880 -160 { lab=#net8}
|
||||
N 600 -120 880 -120 { lab=B[2]}
|
||||
N 680 -80 880 -80 { lab=B[1]}
|
||||
N 760 -40 880 -40 { lab=B[0]}
|
||||
N 1000 -100 1050 -100 { lab=#net29}
|
||||
N 1050 -420 1050 -300 { lab=#net27}
|
||||
N 1050 -220 1050 -100 { lab=#net29}
|
||||
N 790 -200 880 -200 { lab=#net10}
|
||||
N 1170 -260 1230 -260 { lab=S[6]}
|
||||
N 2020 -1770 2060 -1770 { lab=#net30}
|
||||
N 2340 -2440 2440 -2440 { lab=#net31}
|
||||
N 2070 -2460 2220 -2460 { lab=BNEXT[3]}
|
||||
N 2070 -2460 2070 -2440 { lab=BNEXT[3]}
|
||||
N 1920 -2440 2070 -2440 { lab=BNEXT[3]}
|
||||
N 2340 -2260 2440 -2260 { lab=#net32}
|
||||
N 2070 -2280 2220 -2280 { lab=BNEXT[2]}
|
||||
N 2070 -2280 2070 -2260 { lab=BNEXT[2]}
|
||||
N 1920 -2260 2070 -2260 { lab=BNEXT[2]}
|
||||
N 2340 -2080 2440 -2080 { lab=#net33}
|
||||
N 2070 -2100 2220 -2100 { lab=BNEXT[1]}
|
||||
N 2070 -2100 2070 -2080 { lab=BNEXT[1]}
|
||||
N 1920 -2080 2070 -2080 { lab=BNEXT[1]}
|
||||
N 2340 -1900 2440 -1900 { lab=#net34}
|
||||
N 2070 -1920 2220 -1920 { lab=BNEXT[0]}
|
||||
N 2070 -1920 2070 -1900 { lab=BNEXT[0]}
|
||||
N 1920 -1900 2070 -1900 { lab=BNEXT[0]}
|
||||
N 2060 -1770 2160 -1770 { lab=#net30}
|
||||
N 2160 -2420 2160 -1770 { lab=#net30}
|
||||
N 2160 -2420 2220 -2420 { lab=#net30}
|
||||
N 2160 -2240 2220 -2240 { lab=#net30}
|
||||
N 2160 -2060 2220 -2060 { lab=#net30}
|
||||
N 2160 -1880 2220 -1880 { lab=#net30}
|
||||
N 1760 -1010 1890 -1010 { lab=CLK}
|
||||
N 1760 -1180 1890 -1180 { lab=CLEAR_}
|
||||
C {title.sym} 1350 -50 0 0 {name=l38 author="Stefan Schippers"}
|
||||
C {fa_1.sym} 1860 -2480 0 0 {name=x28 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {fa_1.sym} 1860 -2300 0 0 {name=x33 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {fa_1.sym} 1860 -2120 0 0 {name=x34 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {fa_1.sym} 1860 -1940 0 0 {name=x35 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {dfrtp_1.sym} 2530 -2440 0 0 {name=x36 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 2440 -2460 0 0 {name=l32 sig_type=std_logic lab=CLK}
|
||||
C {lab_pin.sym} 2440 -2420 0 0 {name=l33 sig_type=std_logic lab=CLEAR_}
|
||||
C {lab_pin.sym} 2700 -2460 0 1 {name=l34 sig_type=std_logic lab=B[3]}
|
||||
C {dfrtp_1.sym} 2530 -2260 0 0 {name=x37 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 2440 -2280 0 0 {name=l35 sig_type=std_logic lab=CLK}
|
||||
C {lab_pin.sym} 2440 -2240 0 0 {name=l36 sig_type=std_logic lab=CLEAR_}
|
||||
C {lab_pin.sym} 2700 -2280 0 1 {name=l37 sig_type=std_logic lab=B[2]}
|
||||
C {dfrtp_1.sym} 2530 -2080 0 0 {name=x53 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 2440 -2100 0 0 {name=l39 sig_type=std_logic lab=CLK}
|
||||
C {lab_pin.sym} 2440 -2060 0 0 {name=l40 sig_type=std_logic lab=CLEAR_}
|
||||
C {lab_pin.sym} 2700 -2100 0 1 {name=l41 sig_type=std_logic lab=B[1]}
|
||||
C {dfrtp_1.sym} 2530 -1900 0 0 {name=x54 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 2440 -1920 0 0 {name=l42 sig_type=std_logic lab=CLK}
|
||||
C {lab_pin.sym} 2440 -1880 0 0 {name=l43 sig_type=std_logic lab=CLEAR_}
|
||||
C {lab_pin.sym} 2700 -1920 0 1 {name=l44 sig_type=std_logic lab=B[0]}
|
||||
C {inv_2.sym} 1630 -1990 0 0 {name=x55 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 1590 -1990 0 0 {name=l45 sig_type=std_logic lab=CLEAR_}
|
||||
C {noconn.sym} 1940 -2520 0 1 {name=l46}
|
||||
C {nand4_1.sym} 1960 -1770 0 0 {name=x56 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {inv_2.sym} 1790 -1790 0 0 {name=x57 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {inv_2.sym} 1790 -1710 0 0 {name=x58 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {inv_2.sym} 550 -3100 3 1 {name=x22 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 520 -3160 0 0 {name=l19 sig_type=std_logic lab=B[3]}
|
||||
C {inv_2.sym} 630 -3100 3 1 {name=x23 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 600 -3160 0 0 {name=l21 sig_type=std_logic lab=B[2]}
|
||||
C {inv_2.sym} 710 -3100 3 1 {name=x24 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 680 -3160 0 0 {name=l22 sig_type=std_logic lab=B[1]}
|
||||
C {inv_2.sym} 790 -3100 3 1 {name=x25 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 760 -3160 0 0 {name=l23 sig_type=std_logic lab=B[0]}
|
||||
C {nand4_1.sym} 940 -580 0 0 {name=x21 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and4_1.sym} 1110 -2420 0 0 {name=x38 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -2980 0 0 {name=x39 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -2820 0 0 {name=x40 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and2_1.sym} 1110 -2900 0 0 {name=x41 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 1230 -2900 0 1 {name=p4 lab=S[0]}
|
||||
C {nand4_1.sym} 940 -2500 0 0 {name=x42 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -2340 0 0 {name=x43 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -2180 0 0 {name=x44 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -2660 0 0 {name=x45 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 1230 -2420 0 1 {name=p5 lab=S[1]}
|
||||
C {nand4_1.sym} 940 -2020 0 0 {name=x46 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -1860 0 0 {name=x47 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and2_1.sym} 1110 -1940 0 0 {name=x48 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 1230 -1940 0 1 {name=p6 lab=S[2]}
|
||||
C {nand4_1.sym} 940 -1700 0 0 {name=x49 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -1540 0 0 {name=x50 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -1380 0 0 {name=x51 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and3_1.sym} 1110 -1540 0 0 {name=x52 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 1230 -1540 0 1 {name=p1 lab=S[3]}
|
||||
C {and4_1.sym} 940 -1220 0 0 {name=x18 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and4_1.sym} 940 -1060 0 0 {name=x19 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and4_1.sym} 940 -900 0 0 {name=x20 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and4_1.sym} 940 -740 0 0 {name=x26 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {or4_1.sym} 1110 -980 0 0 {name=x27 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 1230 -980 0 1 {name=p2 lab=S[4]}
|
||||
C {lab_pin.sym} 1230 -580 0 1 {name=p3 lab=S[5]}
|
||||
C {nand4_1.sym} 940 -420 0 0 {name=x29 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -260 0 0 {name=x30 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {nand4_1.sym} 940 -100 0 0 {name=x31 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and3_1.sym} 1110 -260 0 0 {name=x32 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 1230 -260 0 1 {name=p7 lab=S[6]}
|
||||
C {and2_1.sym} 2280 -2440 0 0 {name=x59 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and2_1.sym} 2280 -2260 0 0 {name=x60 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and2_1.sym} 2280 -2080 0 0 {name=x61 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {and2_1.sym} 2280 -1900 0 0 {name=x62 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {lab_pin.sym} 2070 -2460 0 0 {name=l51 sig_type=std_logic lab=BNEXT[3]}
|
||||
C {lab_pin.sym} 2070 -2280 0 0 {name=l52 sig_type=std_logic lab=BNEXT[2]}
|
||||
C {lab_pin.sym} 2070 -2100 0 0 {name=l53 sig_type=std_logic lab=BNEXT[1]}
|
||||
C {lab_pin.sym} 2070 -1920 0 0 {name=l54 sig_type=std_logic lab=BNEXT[0]}
|
||||
C {lab_pin.sym} 1730 -1830 0 0 {name=l55 sig_type=std_logic lab=BNEXT[3]}
|
||||
C {lab_pin.sym} 1730 -1790 0 0 {name=l56 sig_type=std_logic lab=BNEXT[2]}
|
||||
C {lab_pin.sym} 1730 -1750 0 0 {name=l57 sig_type=std_logic lab=BNEXT[1]}
|
||||
C {lab_pin.sym} 1730 -1710 0 0 {name=l58 sig_type=std_logic lab=BNEXT[0]}
|
||||
C {launcher.sym} 1840 -130 0 0 {name=h3
|
||||
descr="START SIMULATION"
|
||||
comment="
|
||||
This launcher Starts a simple interactive simulation of the LFSR
|
||||
"
|
||||
tclcommand=" set count 0
|
||||
set duration 1000
|
||||
xschem select instance p8 ;# CLEAR_
|
||||
xschem select instance p9 ;# CLK
|
||||
xschem logic_set 0 ;# reset pulse (active low)
|
||||
update ;# allow event loop to come in (update screen, user input etc)
|
||||
after $duration
|
||||
xschem select instance p9 clear ;# release CLK
|
||||
xschem logic_set 1
|
||||
xschem select instance p8 clear ;# release CLEAR_
|
||||
xschem select instance p9 ;# CLK
|
||||
update ;# allow event loop to come in (update screen, user input etc)
|
||||
set logic_value 0
|
||||
while \{1\} \{
|
||||
update ;# allow event loop to come in (update screen, user input etc)
|
||||
incr count
|
||||
if \{$count>100 || $tclstop == 1\} break
|
||||
puts \\"simulating: loop $count\\"
|
||||
xschem logic_set $logic_value
|
||||
after $duration
|
||||
set logic_value [expr !$logic_value]
|
||||
set duration [expr int($duration/1.05)]
|
||||
\}
|
||||
"
|
||||
}
|
||||
C {inv_2.sym} 2200 -1770 0 0 {name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||
C {giant_label.sym} 1890 -1010 0 1 {name=l1 sig_type=std_logic lab=CLK text=CLK}
|
||||
C {giant_label.sym} 2240 -1770 0 1 {name=l3 sig_type=std_logic lab=R text="RESET
|
||||
COUNTER"}
|
||||
C {giant_label.sym} 1890 -1180 0 1 {name=l4 sig_type=std_logic lab=CLEAR_ text="CLEAR (active low)"}
|
||||
C {segment.sym} 3850 -2090 0 0 {name=l6 sig_type=std_logic lab=S[3]}
|
||||
C {segment.sym} 3320 -2060 1 0 {name=l2 sig_type=std_logic lab=S[1]}
|
||||
C {segment.sym} 3820 -2060 3 1 {name=l5 sig_type=std_logic lab=S[2]}
|
||||
C {segment.sym} 3850 -2670 0 0 {name=l7 sig_type=std_logic lab=S[0]}
|
||||
C {segment.sym} 3820 -2040 3 0 {name=l8 sig_type=std_logic lab=S[5]}
|
||||
C {segment.sym} 3320 -2040 1 1 {name=l9 sig_type=std_logic lab=S[4]}
|
||||
C {segment.sym} 3290 -1430 2 0 {name=l10 sig_type=std_logic lab=S[6]}
|
||||
C {ipin.sym} 1760 -1180 0 0 {name=p8 sig_type=std_logic lab=CLEAR_}
|
||||
C {ipin.sym} 1760 -1010 0 0 {name=p9 sig_type=std_logic lab=CLK}
|
||||
Loading…
Reference in New Issue