@@ -2815,6 +2815,8 @@ struct VerificPass : public Pass {
2815
2815
log (" -extnets\n " );
2816
2816
log (" Resolve references to external nets by adding module ports as needed.\n " );
2817
2817
log (" \n " );
2818
+ log (" -no-split-complex-ports\n " );
2819
+ log (" Complex ports (structs or arrays) are not split and remain packed as a single port.\n " );
2818
2820
log (" -autocover\n " );
2819
2821
log (" Generate automatic cover statements for all asserts\n " );
2820
2822
log (" \n " );
@@ -3548,6 +3550,7 @@ struct VerificPass : public Pass {
3548
3550
bool mode_nosva = false , mode_names = false , mode_verific = false ;
3549
3551
bool mode_autocover = false , mode_fullinit = false ;
3550
3552
bool flatten = false , extnets = false , mode_cells = false ;
3553
+ bool split_complex_ports = true ;
3551
3554
string dumpfile;
3552
3555
string ppfile;
3553
3556
Map parameters (STRING_HASH);
@@ -3565,6 +3568,10 @@ struct VerificPass : public Pass {
3565
3568
flatten = true ;
3566
3569
continue ;
3567
3570
}
3571
+ if (args[argidx] == " -no-split-complex-ports" ) {
3572
+ split_complex_ports = false ;
3573
+ continue ;
3574
+ }
3568
3575
if (args[argidx] == " -extnets" ) {
3569
3576
extnets = true ;
3570
3577
continue ;
@@ -3804,8 +3811,10 @@ struct VerificPass : public Pass {
3804
3811
worker.run (nl.second );
3805
3812
}
3806
3813
3807
- for (auto nl : nl_todo)
3808
- nl.second ->ChangePortBusStructures (1 /* hierarchical */ );
3814
+ if (split_complex_ports) {
3815
+ for (auto nl : nl_todo)
3816
+ nl.second ->ChangePortBusStructures (1 /* hierarchical */ );
3817
+ }
3809
3818
3810
3819
if (!dumpfile.empty ()) {
3811
3820
VeriWrite veri_writer;
0 commit comments