3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-01-18 08:18:56 +00:00
yosys/tests/various/test_splitnets.tcl
Natalia b6715cf74d Simplify regex to be more permissive
Make the regex less strict about exact whitespace and format. Just look
for a number followed by 'wires' or 'ports' anywhere on the line.
2026-01-14 13:59:26 -08:00

64 lines
1.6 KiB
Tcl

yosys -import
proc read_stats { file } {
set fid [open $file]
set result [read $fid]
close $fid
set ports 0
set nets 0
foreach line [split $result "\n"] {
# Match upstream yosys stat format - be permissive about whitespace
if [regexp {([0-9]+).*wires} $line -> n] {
set nets [expr $nets + $n]
}
if [regexp {([0-9]+).*ports} $line -> n] {
set ports [expr $ports + $n]
}
}
return [list $nets $ports]
}
proc assert_count { type actual expected } {
if {$actual != $expected} {
puts "Error, $type count: $actual vs $expected expected"
exit 1
}
}
read_verilog test_splitnets.v
hierarchy -auto-top
procs
design -save "pre"
splitnets -ports_only -top_only
write_verilog -noexpr "ports_only_in_top.v"
tee -o "ports_only_in_top.txt" stat
foreach {nets ports} [read_stats "ports_only_in_top.txt"] {}
assert_count "nets" $nets 26
assert_count "ports" $ports 16
design -load "pre"
splitnets -ports_only
write_verilog -noexpr "ports_only_in_all.v"
tee -o "ports_only_in_all.txt" stat
foreach {nets ports} [read_stats "ports_only_in_all.txt"] {}
assert_count "nets" $nets 30
assert_count "ports" $ports 20
design -load "pre"
splitnets -ports -top_only
write_verilog -noexpr "ports_nets_in_top.v"
tee -o "ports_nets_in_top.txt" stat
foreach {nets ports} [read_stats "ports_nets_in_top.txt"] {}
assert_count "nets" $nets 30
assert_count "ports" $ports 16
design -load "pre"
splitnets -ports
write_verilog -noexpr "ports_nets_in_all.v"
tee -o "ports_nets_in_all.txt" stat
foreach {nets ports} [read_stats "ports_nets_in_all.txt"] {}
assert_count "nets" $nets 40
assert_count "ports" $ports 20
exit 0