@@ -370,11 +370,11 @@ int Abc_CommandGenWlc( Abc_Frame_t * pAbc, int argc, char ** argv )
370370 }
371371 }
372372 else {
373+ if ( fVerbose )
374+ printf ( "Reading generated Verilog using using command %%read...\n" );
373375 Wlc_Ntk_t * pNtk = Wlc_ReadVer ( NULL , pOutStr , 0 );
374- if ( pNtk ) {
376+ if ( pNtk )
375377 Wlc_AbcUpdateNtk ( pAbc , pNtk );
376- //printf( "Read current design using %%read <file.v>\n" );
377- }
378378 else {
379379 printf ( "The following design in Verilog, which was generated from string \"%s\",\n" , pStr );
380380 printf ( "cannot be read into ABC due to the known limitations of command \"%%read\".\n" );
@@ -390,13 +390,14 @@ int Abc_CommandGenWlc( Abc_Frame_t * pAbc, int argc, char ** argv )
390390 Abc_Print ( -2 , "\nusage: %%gen [-F file] [-vh] \"<mini_verilog_string>\"\n" );
391391 Abc_Print ( -2 , "\t generates the design from a mini-Verilog string\n" );
392392 Abc_Print ( -2 , "\t-F file : optional file name to save the design in standard Verilog [default = unused]\n" );
393+ Abc_Print ( -2 , "\t-v (if a file name is provided, Verilog is dumped into a file and not read into ABC)\n" );
393394 Abc_Print ( -2 , "\t-v : toggle printing verbose information [default = %s]\n" , fVerbose ? "yes" : "no" );
394395 Abc_Print ( -2 , "\t-h : print the command usage\n" );
395396 Abc_Print ( -2 , "\n" );
396- Abc_Print ( -2 , "A mini-Verilog design is a single string. Any spaces/tabs/newlines are ignored. \n" );
397- Abc_Print ( -2 , "The string is split into clauses by semicolons ';'.\n" );
397+ Abc_Print ( -2 , "A mini-Verilog design is a single string. Any spaces/tabs/newlines are ignored\n" );
398+ Abc_Print ( -2 , "(handled internally). The string is split into clauses by semicolons ';'.\n" );
398399 Abc_Print ( -2 , "\n" );
399- Abc_Print ( -2 , "Clause kinds (first character):\n" );
400+ Abc_Print ( -2 , "Clause types (first character):\n" );
400401 Abc_Print ( -2 , " - 'm<name>' : module name (appear once)\n" );
401402 Abc_Print ( -2 , " - '{i|o|w}[s]<number><id_list>' : input/output/wire declarations\n" );
402403 Abc_Print ( -2 , " where optional 's' = signed, <number> = bit-width (>0), <id_list> = id[,id]*\n" );
@@ -411,12 +412,21 @@ int Abc_CommandGenWlc( Abc_Frame_t * pAbc, int argc, char ** argv )
411412 Abc_Print ( -2 , " - Outputs: if an 'o...' assignment omits a name (e.g., 'o8=<expr>'), the output name defaults to 'o'.\n" );
412413 Abc_Print ( -2 , " - Inputs: if an 'i...' clause omits names (e.g., 'i4'), a single input is declared with an\n" );
413414 Abc_Print ( -2 , " auto-generated unsigned name 'a', then 'b', then 'c', ... in the order of appearance (skipping\n" );
414- Abc_Print ( -2 , " names already used). This allows for specifying a 4-bit multiplier 'mul' as: ' mmul;i4;i4;o8=a*b' .\n" );
415+ Abc_Print ( -2 , " names already used). This allows for specifying a 4-bit multiplier 'mul' as: \" mmul;i4;i4;o8=a*b\" .\n" );
415416 Abc_Print ( -2 , "\n" );
416417 Abc_Print ( -2 , "Notes:\n" );
417418 Abc_Print ( -2 , " * Only a single, non-hierarchical, combinational module is supported.\n" );
418- Abc_Print ( -2 , " * Whitespace anywhere is ignored before parsing (handled internally).\n" );
419- Abc_Print ( -2 , " * RHS expressions are passed through verbatim (must be in valid Verilog).\n" );
419+ Abc_Print ( -2 , " * RHS expressions are passed through verbatim or with added spaces (must be in valid Verilog).\n" );
420+ Abc_Print ( -2 , " * For the design to be readable into ABC, make sure each RHS has only one operator,\n" );
421+ Abc_Print ( -2 , " with constant definition, bit-slicing, and concatenation being considered operators.\n" );
422+ Abc_Print ( -2 , " * Alternatively, use any RHS style, which make have several operator per line,\n" );
423+ Abc_Print ( -2 , " write the design by specifying the file name \"-F file\", and read it back using Yosys.\n" );
424+ Abc_Print ( -2 , " Example: \"mtest;i4a,b,c;o4z=a*b+c\" is not readable into ABC directly but readable via Yosys:\n\n" );
425+ Abc_Print ( -2 , " abc 01> %%gen \"mtest;i4a,b,c;o4z=a*b+c\"\n" );
426+ Abc_Print ( -2 , " Warning: Trailing symbols \"+ c \" in line 6.\n\n" );
427+ Abc_Print ( -2 , " abc 01> %%gen -F test.v \"mtest;i4a,b,c;o4z=a*b+c\"; %yosys -b test.v; &ps\n" );
428+ Abc_Print ( -2 , " Dumped the design generated from mini-Verilog string \"mtest;i4a,b,c;o4z=a*b+c\" into file \"test.v\".\n" );
429+ Abc_Print ( -2 , " test : i/o = 12/ 4 and = 61 lev = 15 (9.00) mem = 0.00 MB\n" );
420430 return 1 ;
421431}
422432
0 commit comments