mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 17:15:33 +00:00
test_select: Add and exercise test_select pass
Developer facing, intended to check internal selection semantics work as expected. i.e. it would have revealed the bug in the now reverted PR.
This commit is contained in:
parent
f042c36898
commit
dbc2611dd6
3 changed files with 338 additions and 0 deletions
165
tests/select/internal_selects.ys
Normal file
165
tests/select/internal_selects.ys
Normal file
|
@ -0,0 +1,165 @@
|
|||
read_verilog boxes.v
|
||||
|
||||
## base case, no warnings ##
|
||||
logger -expect-no-warnings
|
||||
|
||||
select =*
|
||||
select -assert-count 13 %
|
||||
select -assert-mod-count 3 %
|
||||
test_select # SELECT_ALL && SB_ALL
|
||||
select -assert-count 13 %
|
||||
select -assert-mod-count 3 %
|
||||
|
||||
select =*
|
||||
select -assert-mod-count 3 %
|
||||
test_select -whole_only # SELECT_WHOLE_ONLY
|
||||
select -assert-mod-count 3 %
|
||||
|
||||
select =*
|
||||
select -assert-count 13 %
|
||||
test_select -unboxed_only -include_wb # SB_EXCL_BB_ONLY
|
||||
select -assert-count 10 %
|
||||
|
||||
select =*
|
||||
select -assert-count 13 %
|
||||
test_select -unboxed_only # SB_UNBOXED_ONLY
|
||||
select -assert-count 5 %
|
||||
|
||||
logger -check-expected
|
||||
|
||||
## don't add to selection ##
|
||||
select *
|
||||
select -assert-count 5 %
|
||||
select -assert-mod-count 1 %
|
||||
test_select # SELECT_ALL && SB_ALL
|
||||
select -assert-count 5 %
|
||||
select -assert-mod-count 1 %
|
||||
|
||||
select =wb/a %n
|
||||
select -assert-mod-count 3 %
|
||||
test_select -whole_only # SELECT_WHOLE_ONLY
|
||||
select -assert-mod-count 2 %
|
||||
|
||||
select =w:*
|
||||
select -assert-mod-count 3 %
|
||||
test_select -whole_only # SELECT_WHOLE_ONLY
|
||||
select -assert-mod-count 1 %
|
||||
|
||||
select =w:*
|
||||
select -assert-mod-count 3 %
|
||||
test_select -whole_only -unboxed_only # SELECT_WHOLE_ONLY && SB_UNBOXED_ONLY
|
||||
select -assert-none %
|
||||
|
||||
select =w:* %n
|
||||
select -assert-mod-count 2 %
|
||||
test_select -whole_only # SELECT_WHOLE_ONLY
|
||||
select -assert-none %
|
||||
|
||||
select =?b
|
||||
select -assert-count 8 %
|
||||
test_select -unboxed_only -include_wb # SB_EXCL_BB_ONLY
|
||||
select -assert-count 5 %
|
||||
|
||||
select =?b
|
||||
select -assert-count 8 %
|
||||
test_select -unboxed_only # SB_UNBOXED_ONLY
|
||||
select -assert-none %
|
||||
|
||||
select =wb %n
|
||||
select -assert-count 8 %
|
||||
test_select -unboxed_only -include_wb # SB_EXCL_BB_ONLY
|
||||
select -assert-count 5 %
|
||||
|
||||
select =top/a %n
|
||||
select -assert-count 12 %
|
||||
select -assert-mod-count 3 %
|
||||
test_select -whole_only -unboxed_only -include_wb # SELECT_WHOLE_ONLY && SB_EXCL_BB_ONLY
|
||||
select -assert-count 5 %
|
||||
select -assert-mod-count 1 %
|
||||
|
||||
## warnings work ##
|
||||
logger -expect warning "Ignoring blackbox module bb." 1
|
||||
select =*
|
||||
test_select -unboxed_only -include_wb -warn_boxes # SB_EXCL_BB_WARN
|
||||
logger -check-expected
|
||||
|
||||
logger -expect warning "Ignoring boxed module .b." 2
|
||||
select =*
|
||||
test_select -unboxed_only -warn_boxes # SB_UNBOXED_WARN
|
||||
logger -check-expected
|
||||
|
||||
logger -expect warning "Ignoring partially selected module [wb|top]." 2
|
||||
select =w:*
|
||||
test_select -whole_warn # SELECT_WHOLE_WARN
|
||||
logger -check-expected
|
||||
|
||||
logger -expect warning "Ignoring partially selected module [wb|top]." 2
|
||||
logger -expect warning "Ignoring blackbox module bb." 1
|
||||
select =w:*
|
||||
test_select -whole_warn -unboxed_only -include_wb -warn_boxes # SELECT_WHOLE_WARN && SB_EXCL_BB_WARN
|
||||
logger -check-expected
|
||||
|
||||
logger -expect warning "Ignoring partially selected module [wb|top]." 2
|
||||
logger -expect warning "Ignoring boxed module bb." 1
|
||||
select =w:*
|
||||
test_select -whole_warn -unboxed_only -warn_boxes # SELECT_WHOLE_WARN && SB_UNBOXED_WARN
|
||||
logger -check-expected
|
||||
|
||||
## partials warn before boxes ##
|
||||
logger -expect warning "Ignoring partially selected module wb." 1
|
||||
select =wb/a
|
||||
test_select -whole_warn -unboxed_only -warn_boxes # SELECT_WHOLE_WARN && SB_UNBOXED_WARN
|
||||
logger -check-expected
|
||||
|
||||
## boxes won't warn if they've been removed because of partial selection ##
|
||||
logger -expect-no-warnings
|
||||
select =wb/a
|
||||
test_select -whole_only -unboxed_only -warn_boxes # SELECT_WHOLE_ONLY && SB_UNBOXED_WARN
|
||||
logger -check-expected
|
||||
|
||||
## boxes still warn if they're not partially selected
|
||||
logger -expect warning "Ignoring boxed module wb." 1
|
||||
select =bb %n
|
||||
test_select -whole_only -unboxed_only -warn_boxes # SELECT_WHOLE_ONLY && SB_UNBOXED_WARN
|
||||
logger -check-expected
|
||||
|
||||
## don't warn if it's not selected ##
|
||||
logger -expect-no-warnings
|
||||
select =bb %n
|
||||
test_select -unboxed_only -include_wb -warn_boxes # SB_EXCL_BB_WARN
|
||||
logger -check-expected
|
||||
|
||||
logger -expect-no-warnings
|
||||
select *
|
||||
test_select -unboxed_only -warn_boxes # SB_UNBOXED_WARN
|
||||
logger -check-expected
|
||||
|
||||
logger -expect warning "Ignoring boxed module bb." 1
|
||||
select =wb %n
|
||||
test_select -unboxed_only -warn_boxes # SB_UNBOXED_WARN
|
||||
logger -check-expected
|
||||
|
||||
## don't error if it's not selected ##
|
||||
logger -expect-no-warnings
|
||||
|
||||
select =bb %n
|
||||
test_select -unboxed_only -include_wb -err_boxes # SB_EXCL_BB_ERR
|
||||
|
||||
select =bb %n
|
||||
test_select -unboxed_only -include_wb -cmderr_boxes # SB_EXCL_BB_CMDERR
|
||||
|
||||
select *
|
||||
test_select -unboxed_only -err_boxes # SB_UNBOXED_ERR
|
||||
|
||||
select *
|
||||
test_select -unboxed_only -cmderr_boxes # SB_UNBOXED_CMDERR
|
||||
|
||||
select *
|
||||
test_select -whole_err # SELECT_WHOLE_ERR
|
||||
|
||||
select *
|
||||
test_select -whole_cmderr # SELECT_WHOLE_CMDERR
|
||||
|
||||
logger -check-expected
|
||||
|
||||
##
|
Loading…
Add table
Add a link
Reference in a new issue