Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

how to make my design as black box

Status
Not open for further replies.

aravind

Advanced Member level 1
Joined
Jun 29, 2004
Messages
487
Helped
45
Reputation
94
Reaction score
18
Trophy points
1,298
Location
india
Activity points
3,597
hi friends
how i create my own black box module

example for an equalizer i need fir filter.
i wanna create fir filter module as a black box.
i synthesis and got the netlist . and efficiently place and route it.
in backend i dont wanna change place of cells in my FIR filter.
for that what i do.
 

tarkyss

Full Member level 6
Joined
Aug 1, 2005
Messages
345
Helped
26
Reputation
52
Reaction score
9
Trophy points
1,298
Location
China
Activity points
4,187
BPV extract in Astra or Milkyway
you can reference Milkyway reference in detail
 

ami

Member level 3
Joined
Apr 28, 2005
Messages
62
Helped
4
Reputation
8
Reaction score
0
Trophy points
1,286
Location
VN
Activity points
1,952
Just build a tool (Perl-script for an example). This tool will search the module inyour netlist file, remove all logic in that module ( except the module declaration, input,output,output) ----> it will be a black box.
Then, after your process - this tool will re-insert the removed code into that module.
Regards
 

aravind

Advanced Member level 1
Joined
Jun 29, 2004
Messages
487
Helped
45
Reputation
94
Reaction score
18
Trophy points
1,298
Location
india
Activity points
3,597
i dont know perl script . can u give small example script and papers
 

ami

Member level 3
Joined
Apr 28, 2005
Messages
62
Helped
4
Reputation
8
Reaction score
0
Trophy points
1,286
Location
VN
Activity points
1,952
Just use this code. You can find many Perl-script materials from internet.
This is a sample script ( create black_box in netlist)

Code:
#!/usr/bin/perl

$file_name = $ARGV[0]; #source file name
$file_name1= $ARGV[1];#destination file name
$source_path = "/netlist/";
$dest_path     = "/netlist/";
$read_file_name = $source_path.$file_name;
$write_file_name =$dest_path.$file_name1;
$write_file_name2 =$dest_path."output.netlist";
$write_file_name3 =$dest_path."output1.netlist";
$search_str = "your_module_name_to_create_black_box"
#########################################################################################
select STDOUT;
open(read_file,"$read_file_name") || die "can not open file $read_file_name\n";
@list = {};
@a = {};
$m_a = 0;

@b = {};
$m_b = 0;

@c = {};
$m_c = 0;

@d = {};
$m_d = 0;
$c = 0;
$k = 0;
$k1 = 0;

#Split area for del core

while (<read_file>)
      {
       chop;
       @list[$c] = "$_";
       if (index(@list[$c],$search_str) != -1) 	  {$k = 1;}	 
       if (($k  == 1)and (index(@list[$c],"endmodule")!= -1)) {$k = 0;}
       if (($k  == 1)and (index(@list[$c],"wire")!= -1))      {$k1 = 1;$pont1 =$c; printf "\n$pont1 $search_str";} 
       if (($k1 == 1)and (index(@list[$c],"endmodule")!= -1)){$k1 = 0;$pont2 = $c;printf "\n$pont2";}
       if (($k  == 1)and ($k1 == 0)) {@b[$m_b] = @list[$c];$m_b++;}  
       if ($k1  == 0) {@a[$m_a] = @list[$c]; $c++; $m_a++;}
       else {$c++;} 
      }

$j=0;
$tam = 0;
$tam2 = 0;
printf "\n m_b=$m_b";
while ($j <$m_b)
     {
      if((index(@b[$j],"output")!= -1) and (index(@b[$j],";") !=-1) and (index(@b[$j],",") ==-1) )
      {
      $length = length(@b[$j]);printf "\nLength = $length\n";
      $length1 = rindex(@b[$j]," "); printf "\nLength1 = $length1\n";
      $sub_str = substr(@b[$j],$length1,$length-$length1-1);
      @c[$m_c] = $sub_str;
      $m_c++;
      }
      if((index(@b[$j],"output")!= -1) and (index(@b[$j],",") !=-1)) { $tam = 1;$tam2 = 1;} else {$tam2 =0;}
      if (($tam == 1) and ($tam2 == 1)) {@d[$m_d] = substr(@b[$j],9,length(@b[$j])+1);$m_d++}
      if (($tam == 1) and ($tam2 == 0)) {@d[$m_d] = substr(@b[$j],9,length(@b[$j])+1);$m_d++}

      $j++;
     } 
close (read_file);

#////////////
$j=0;
$str ="";
while ($j<$m_d)
      {
      $str = $str.$d[$j]; 
      $j++;
      }
$length_str = length($str);
$str = substr($str,0,$length_str-1);      
@split_array = split(/,/,$str);
$count_array = @split_array;
@c1 = (@c,@split_array);
$m_c1 = @c1;

#///////////////////////////////////
$j=0;
$a_str = "assign ";
while ($j <$m_c1)
      {
      $stra = @c1[$j];
      @c1[$j]= $a_str.$stra."   = 0;";
      $j++; 
      }
#////////////////////////////////////
$j = 0;
$j1 =0;
open(write_file,">$write_file_name") || die "can not open file $write_file_name\n";
open(read_file,"$read_file_name") || die "can not open file $read_file_name\n";
while( <read_file> )
		  {
		  chop;
		  select write_file;
		  if ($j == $pont1) {last;}
		  print "$_\n";
		  $j++;
		  }
$i = 0;		    
while($i < $m_c1)
	 {
	   printf "@c1[$i]\n";
	  $i++;
	 }	  
	 printf "endmodule\n";
while( <read_file> )
		  {
		  chop;
		  #select write_file;
		  if ($j >= $pont2)
       	  	  {
		   print "$_\n";
		  }
		  $j++; 
		  }   
close(read_file);		  
close(write_file);		  
printf "\n";
Hope this help
 

jcchan

Member level 1
Joined
Apr 28, 2005
Messages
33
Helped
1
Reputation
2
Reaction score
0
Trophy points
1,286
Activity points
1,569
You cna try this verilog example and the synthesis tools will make the module to be black box.

modue test (in1, in2,in3, out3);
input in1, in2, in3;
output out3;
//synopsys translate_off
assign out3 = in1 | in2 | in3;
//synopsys translate_on
endmodule
 

aravind

Advanced Member level 1
Joined
Jun 29, 2004
Messages
487
Helped
45
Reputation
94
Reaction score
18
Trophy points
1,298
Location
india
Activity points
3,597
can u give more information about how to proceed with block
 

farmerwang

Member level 3
Joined
May 29, 2002
Messages
59
Helped
4
Reputation
8
Reaction score
2
Trophy points
1,288
Activity points
651
Don't understand what do you mean by black box your design. Do you mean to protect your design from being read by other people?
 

aravind

Advanced Member level 1
Joined
Jun 29, 2004
Messages
487
Helped
45
Reputation
94
Reaction score
18
Trophy points
1,298
Location
india
Activity points
3,597
my aim is P&R tools shouldnt touch my blockbox. for placement and routing.
 

brotherjam

Newbie level 6
Joined
Dec 10, 2005
Messages
11
Helped
1
Reputation
2
Reaction score
0
Trophy points
1,281
Activity points
1,390
modue test (in1, in2,in3, out3);
input in1, in2, in3;
output out3;
//synopsys black_box
//(you can find it in DC manual)
//synopsys translate_off
assign out3 = in1 | in2 | in3;
//synopsys translate_on
endmodule
 

aravind

Advanced Member level 1
Joined
Jun 29, 2004
Messages
487
Helped
45
Reputation
94
Reaction score
18
Trophy points
1,298
Location
india
Activity points
3,597
hi brotherjam
but my issue is different. i wanna do full flow upto SI and RCx analysis . take all necessary data .
then i wanna take netllist after IPO (inplace opt) using cadence encounter.
finally i have to decide every thing OK........
then i wanna make this netlist to black-box.

ok i try this ur program in DC.
do u know equal command in RC(cadence)
let me know please
Thanks
 

brotherjam

Newbie level 6
Joined
Dec 10, 2005
Messages
11
Helped
1
Reputation
2
Reaction score
0
Trophy points
1,281
Activity points
1,390
aravind said:
ok i try this ur program in DC.
do u know equal command in RC(cadence)
let me know please
Thanks
i'm sorry that i just do the front-end design. in DC also the set_dont_touch can do
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top