@@ -2815,6 +2815,9 @@ 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 " );
2820
+ log (" \n " );
2818
2821
log (" -autocover\n " );
2819
2822
log (" Generate automatic cover statements for all asserts\n " );
2820
2823
log (" \n " );
@@ -3548,6 +3551,7 @@ struct VerificPass : public Pass {
3548
3551
bool mode_nosva = false , mode_names = false , mode_verific = false ;
3549
3552
bool mode_autocover = false , mode_fullinit = false ;
3550
3553
bool flatten = false , extnets = false , mode_cells = false ;
3554
+ bool split_complex_ports = true ;
3551
3555
string dumpfile;
3552
3556
string ppfile;
3553
3557
Map parameters (STRING_HASH);
@@ -3565,6 +3569,10 @@ struct VerificPass : public Pass {
3565
3569
flatten = true ;
3566
3570
continue ;
3567
3571
}
3572
+ if (args[argidx] == " -no-split-complex-ports" ) {
3573
+ split_complex_ports = false ;
3574
+ continue ;
3575
+ }
3568
3576
if (args[argidx] == " -extnets" ) {
3569
3577
extnets = true ;
3570
3578
continue ;
@@ -3804,8 +3812,10 @@ struct VerificPass : public Pass {
3804
3812
worker.run (nl.second );
3805
3813
}
3806
3814
3807
- for (auto nl : nl_todo)
3808
- nl.second ->ChangePortBusStructures (1 /* hierarchical */ );
3815
+ if (split_complex_ports) {
3816
+ for (auto nl : nl_todo)
3817
+ nl.second ->ChangePortBusStructures (1 /* hierarchical */ );
3818
+ }
3809
3819
3810
3820
if (!dumpfile.empty ()) {
3811
3821
VeriWrite veri_writer;
0 commit comments