#! /usr/local/bin/perl

# created on Thu Feb 22 11:34:19 EST 2001

$myname = `basename $0`;
chop $myname ;

if (@ARGV != 1) {
    print STDERR <<EOF;
Usage: $myname source_directory

  'source_directory' should contain the top of the directory tree from
  the "picoJava-II v2.0" download.

  This script copies Verilog source files from the picoJava-II
  distribution (v2.0) and places them in the current directory. Some
  files are slightly modified:
    1. fixed typos
    2. removed unnecessary parallel_case and full_case directives
    3. added flops to break timing loops
    4. added synthesizable logic to replace macrocells
       (e.g. RAM, ROM, register files)
    5. added new clk_gate input for gated clock logic
    6. added a _XXX postfix to most module names, which allows
       further processing to make unique copies of the files

  The resulting code is *not* a functional picoJava processor, however
  it is purely synthesizable code which is useful for EDA tool
  testing.

  For more information about the picoJava-II processor and how to get
  the sources see
  http://www.sun.com/microelectronics/communitysource/picojava

  Created by Steve Golson -- Trilobyte Systems -- sgolson\@trilobyte.com
EOF
    exit 1;
}

# get arguments

$sourcedir = $ARGV[0];

############################################################################

die "Cannot find source directory ${sourcedir}/picoJava-II: $!\n" unless (-d ${sourcedir}."/picoJava-II");

##### code_seq.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/code_seq.v > code_seq.v") or die "Couldn't fork while building code_seq.v: $!\n";
print WRITEME <<EOF;
149c
  code_seq_dp_XXX p_code_seq_dp ( 		.romsel(romsel), 
.
110c
  code_seq_cntl_XXX p_code_seq_cntl ( 	.reset_l(reset_l), 
.
25c
module code_seq_XXX (	rsovfi, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building code_seq.v: $!\n";
$expected_cksum = "3813355092\\s+5396\\s+code_seq.v";
chop($new_cksum = `cksum code_seq.v`);
die "Checksum failed for file code_seq.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### code_seq_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/code_seq_cntl.v > code_seq_cntl.v") or die "Couldn't fork while building code_seq_cntl.v: $!\n";
print WRITEME <<EOF;
920d
909c
   case(branch)
.
884c
module branch_decode4_XXX(branch, morethree, fmulovf, rsge64, absign, addsub,
.
862c
   case(branch)
.
837c
module branch_decode3_XXX(branch, morethree, fmulovf, rsge64, absign, addsub,
.
814c
   case(branch)
.
789c
module branch_decode2_XXX(branch, morethree, fmulovf, rsge64, absign, addsub,
.
766c
   case(branch)
.
741c
module branch_decode1_XXX(branch, morethree, fmulovf, rsge64, absign, addsub,
.
644c
branch_decode4_XXX b4(      .romselp_d(romselp_d),
.
629c
branch_decode3_XXX b3(      .romselp_c(romselp_c),
.
614c
branch_decode2_XXX b2(      .romselp_b(romselp_b),
.
599c
branch_decode1_XXX b1(	.romselp_a(romselp_a),
.
558c
module branch_dec_XXX(	romsel,
.
472c
     case(1'b1)  	// synopsys parallel_case
.
398c
module fpu_dec_XXX(		dp_out,
.
360c
     case(opcode)
.
347c
     case(opcode)
.
328c
      case(opcode)
.
216c
     case(opcode)
.
190c
module opcode_dec_XXX(	opcode,
.
160c
  opcode_dec_XXX d8(	.opcode(opcode),
.
135c
  branch_dec_XXX branchd(	.romsel(romsel),
.
117c
  fpu_dec_XXX fpud(		.dp_out(dp_out),
.
26c
module code_seq_cntl_XXX (	reset_l, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building code_seq_cntl.v: $!\n";
$expected_cksum = "2658904788\\s+23550\\s+code_seq_cntl.v";
chop($new_cksum = `cksum code_seq_cntl.v`);
die "Checksum failed for file code_seq_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### code_seq_dp.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/code_seq_dp.v > code_seq_dp.v") or die "Couldn't fork while building code_seq_dp.v: $!\n";
print WRITEME <<EOF;
404c
    case(nx_opcode_v)
.
387c
module map_XXX(     mapadd,
.
327c
module acode_dec_XXX(       code_mux_sel_rom0, 
.
219c
  acode_dec_XXX acode (	.code_mux_sel_rom0(code_mux_sel_rom0),
.
211c
  map_XXX mapd ( 		.mapadd(mapadd), 
.
156c
  fp_roms_XXX fprom_mod(	.rom_en(fpuhold_l),
.
29c
module code_seq_dp_XXX (	romsel, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building code_seq_dp.v: $!\n";
$expected_cksum = "182831144\\s+12687\\s+code_seq_dp.v";
chop($new_cksum = `cksum code_seq_dp.v`);
die "Checksum failed for file code_seq_dp.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### cpu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/rtl/cpu.v > cpu.v") or die "Couldn't fork while building cpu.v: $!\n";
print WRITEME <<EOF;
643c
fpu_XXX fpu (
.
628a
        .clk_gate               (clk_gate),
.
617c
pcsu_XXX    pcsu (
.
574c
smu_XXX smu (
.
546c
dtag_dummy_XXX dtag_shell (
.
527c
dcram_dummy_XXX dcram_shell (
.
460c
dcu_XXX dcu (
.
440c
itag_dummy_XXX itag_shell (
.
424c
icram_dummy_XXX icram_shell (
.
380c
icu_XXX icu (
.
286c
iu_XXX      iu (
.
91a
        input clk_gate;
.
42a
	clk_gate, 
.
25c
module cpu_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building cpu.v: $!\n";
$expected_cksum = "2185621348\\s+26518\\s+cpu.v";
chop($new_cksum = `cksum cpu.v`);
die "Checksum failed for file cpu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### dc_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcu/rtl/dc_dec.v > dc_dec.v") or die "Couldn't fork while building dc_dec.v: $!\n";
print WRITEME <<EOF;
24c
module dc_dec_XXX ( 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building dc_dec.v: $!\n";
$expected_cksum = "348660217\\s+40509\\s+dc_dec.v";
chop($new_cksum = `cksum dc_dec.v`);
die "Checksum failed for file dc_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### dcctl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcu/rtl/dcctl.v > dcctl.v") or die "Couldn't fork while building dcctl.v: $!\n";
print WRITEME <<EOF;
430c
miss_cntl_XXX miss_cntl (
.
400c
wrbuf_cntl_XXX wrbuf_cntl (
.
327c
dcudp_cntl_XXX dcudp_cntl (
.
236c
dc_dec_XXX dc_dec (
.
24c
module dcctl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building dcctl.v: $!\n";
$expected_cksum = "287234690\\s+27259\\s+dcctl.v";
chop($new_cksum = `cksum dcctl.v`);
die "Checksum failed for file dcctl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### dcram_dummy.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcram/rtl/dcram_dummy.v > dcram_dummy.v") or die "Couldn't fork while building dcram_dummy.v: $!\n";
print WRITEME <<EOF;
50a
    data_out <= data_in_dly ^ addr_dly;
    dcache_test_err_l <= ^{
			   bist_mode_dly,
			   bist_reset_dly,
			   test_mode_dly,
			   data_in_dly,
			   we_dly,
			   bypass_dly,
			   bank_sel_dly,
			   reg_enable_dly};
  end

.
49a
always @ (posedge clk) begin
    bist_mode_dly <= bist_mode;
    bist_reset_dly <= bist_reset;
    test_mode_dly <= test_mode;
    data_in_dly <= data_in;
    we_dly <= we;
    bypass_dly <= bypass;
    bank_sel_dly <= bank_sel;
    reg_enable_dly <= reg_enable;
    addr_dly <= addr;
.
46,48c
reg [1:0] bist_mode_dly;
reg bist_reset_dly;
reg test_mode_dly;
reg [63:0] data_in_dly;
reg [3:0] we_dly;
reg bypass_dly;
reg [1:0] bank_sel_dly;
reg reg_enable_dly;
reg [`dc_msb:0] addr_dly;
reg [63:0] data_out;
reg dcache_test_err_l;
.
26c
module dcram_dummy_XXX( clk, bist_mode, bist_reset, test_mode,
.
22a
// this replaces dcram_shell with random synthesizable logic
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building dcram_dummy.v: $!\n";
$expected_cksum = "2743400284\\s+2416\\s+dcram_dummy.v";
chop($new_cksum = `cksum dcram_dummy.v`);
die "Checksum failed for file dcram_dummy.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### dcu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcu/rtl/dcu.v > dcu.v") or die "Couldn't fork while building dcu.v: $!\n";
print WRITEME <<EOF;
286c
dcu_dpath_XXX dcu_dpath (
.
204c
dcctl_XXX dcctl (
.
32c
module dcu_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building dcu.v: $!\n";
$expected_cksum = "2733360270\\s+18351\\s+dcu.v";
chop($new_cksum = `cksum dcu.v`);
die "Checksum failed for file dcu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### dcu_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcu/rtl/dcu_dpath.v > dcu_dpath.v") or die "Couldn't fork while building dcu_dpath.v: $!\n";
print WRITEME <<EOF;
489c
module 	buffer_XXX	( din,
.
447c
module	swapper_XXX(
.
376c
module aligner_XXX (
.
361c
buffer_XXX       wr_buffer  ( 
.
316c
aligner_XXX       aligner_2(
.
306c
aligner_XXX		aligner_1(
.
261c
swapper_XXX		data_swapper( 
.
25c
module dcu_dpath_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building dcu_dpath.v: $!\n";
$expected_cksum = "3169467679\\s+17175\\s+dcu_dpath.v";
chop($new_cksum = `cksum dcu_dpath.v`);
die "Checksum failed for file dcu_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### dcudp_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcu/rtl/dcudp_cntl.v > dcudp_cntl.v") or die "Couldn't fork while building dcudp_cntl.v: $!\n";
print WRITEME <<EOF;
594c
case (cur_state)
.
24c
module dcudp_cntl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building dcudp_cntl.v: $!\n";
$expected_cksum = "148021378\\s+23226\\s+dcudp_cntl.v";
chop($new_cksum = `cksum dcudp_cntl.v`);
die "Checksum failed for file dcudp_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### dtag_dummy.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dtag/rtl/dtag_dummy.v > dtag_dummy.v") or die "Couldn't fork while building dtag_dummy.v: $!\n";
print WRITEME <<EOF;
86a
  hit0_out <= ^{set_sel_dly,wb_set_sel_dly};
  hit1_out <= ^{tag_we_dly,reg_enable_dly};
  dtag_dout <= tag_in_dly ^ cmp_addr_in_dly ^ addr_dly ^ stat_addr_dly;
  stat_out <= stat_in_dly ^ stat_we_dly;
  dtag_test_err_l <= ^{test_mode_dly,bist_mode_dly,bist_reset_dly};
  end
.
85a
always @ (posedge clk) begin
  tag_in_dly <= tag_in;
  cmp_addr_in_dly <= cmp_addr_in;
  stat_in_dly <= stat_in;
  set_sel_dly <= set_sel;
  wb_set_sel_dly <= wb_set_sel;
  tag_we_dly <= tag_we;
  stat_we_dly <= stat_we ;
  addr_dly <= addr;
  stat_addr_dly <= stat_addr;
  reg_enable_dly <= reg_enable;
  test_mode_dly <= test_mode;
  bist_mode_dly <= bist_mode;
  bist_reset_dly <= bist_reset;
.
84a
reg 			hit0_out;
reg 			hit1_out;
reg  [`dt_msb:0]	dtag_dout;
reg	[4:0]		stat_out;
reg 			dtag_test_err_l;
.
76,83c
reg	[`dt_msb:0]	tag_in_dly;
reg	[`dt_msb:0]	cmp_addr_in_dly;
reg	[4:0]		stat_in_dly;
reg			set_sel_dly;
reg			wb_set_sel_dly;
reg			tag_we_dly;
reg	[4:0]		stat_we_dly;
reg	[`dc_msb:4]	addr_dly;
reg	[`dc_msb:4]	stat_addr_dly;
reg			reg_enable_dly;
reg			test_mode_dly;
reg   [1:0]		bist_mode_dly;
reg			bist_reset_dly;
.
26c
module 	dtag_dummy_XXX	(
.
23a
// this replaces dtag_shell with random synthesizable logic

.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building dtag_dummy.v: $!\n";
$expected_cksum = "3398562018\\s+3545\\s+dtag_dummy.v";
chop($new_cksum = `cksum dtag_dummy.v`);
die "Checksum failed for file dtag_dummy.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ex.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/ex.v > ex.v") or die "Couldn't fork while building ex.v: $!\n";
print WRITEME <<EOF;
871c
   ex_regs_XXX ex_regs(.data_in			(ucode_porta_mux_out[31:0]),
.
854c
   imdr_XXX ex_imdr(.ie_mul_d			(mul_e),
.
751c
   ex_dpath_XXX ex_dpath(.carry_in_e		(carry_in_e),
.
571c
   ex_ctl_XXX ex_ctl(.inst_valid			(inst_valid[2:0]),
.
22c
module ex_XXX(opcode_1_op_r,	// From ex_ctl
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ex.v: $!\n";
$expected_cksum = "2418570467\\s+35384\\s+ex.v";
chop($new_cksum = `cksum ex.v`);
die "Checksum failed for file ex.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ex_ctl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/ex_ctl.v > ex_ctl.v") or die "Couldn't fork while building ex_ctl.v: $!\n";
print WRITEME <<EOF;
3143c
module branch_logic_XXX 
.
1344c
branch_logic_XXX	branch_logic(
.
1126c
  ex_decode_XXX ex_decode(
.
22c
module ex_ctl_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ex_ctl.v: $!\n";
$expected_cksum = "3371786837\\s+103590\\s+ex_ctl.v";
chop($new_cksum = `cksum ex_ctl.v`);
die "Checksum failed for file ex_ctl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ex_decode.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/ex_decode.v > ex_decode.v") or die "Couldn't fork while building ex_decode.v: $!\n";
print WRITEME <<EOF;
133c
case (opcode_1_op_r[7:0])
.
121c
module decode8to256_XXX( opcode_1_op_r, decodeout); 
.
22c
module ex_decode_XXX( 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ex_decode.v: $!\n";
$expected_cksum = "3375446271\\s+21846\\s+ex_decode.v";
chop($new_cksum = `cksum ex_decode.v`);
die "Checksum failed for file ex_decode.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ex_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/ex_dpath.v > ex_dpath.v") or die "Couldn't fork while building ex_dpath.v: $!\n";
print WRITEME <<EOF;
21c
module ex_dpath_XXX(carry_in_e,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ex_dpath.v: $!\n";
$expected_cksum = "635120497\\s+34246\\s+ex_dpath.v";
chop($new_cksum = `cksum ex_dpath.v`);
die "Checksum failed for file ex_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ex_len_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/ex_len_dec.v > ex_len_dec.v") or die "Couldn't fork while building ex_len_dec.v: $!\n";
print WRITEME <<EOF;
22c
module ex_len_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ex_len_dec.v: $!\n";
$expected_cksum = "1023473351\\s+10173\\s+ex_len_dec.v";
chop($new_cksum = `cksum ex_len_dec.v`);
die "Checksum failed for file ex_len_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ex_regs.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/ex_regs.v > ex_regs.v") or die "Couldn't fork while building ex_regs.v: $!\n";
print WRITEME <<EOF;
1226c
module mux21_32_XXX(out,
.
830c
   mux21_32_XXX reg_rd_mux(.out  (data_out[31:0]),
.
24c
module ex_regs_XXX(data_in,			// Input
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ex_regs.v: $!\n";
$expected_cksum = "1855075650\\s+47643\\s+ex_regs.v";
chop($new_cksum = `cksum ex_regs.v`);
die "Checksum failed for file ex_regs.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### exponent.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/exponent.v > exponent.v") or die "Couldn't fork while building exponent.v: $!\n";
print WRITEME <<EOF;
133c
exponent_dp_XXX	p_exponent_dp	(
.
74c
exponent_cntl_XXX	p_exponent_cntl	(
.
24c
module exponent_XXX(aexpin, bexpin, dprec, nx_dprec, nx_exconfunc_rom0, nx_exconfunc_rom1, cyc0_type, cyc0_rdy,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building exponent.v: $!\n";
$expected_cksum = "3915637954\\s+5403\\s+exponent.v";
chop($new_cksum = `cksum exponent.v`);
die "Checksum failed for file exponent.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### exponent_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/exponent_cntl.v > exponent_cntl.v") or die "Couldn't fork while building exponent_cntl.v: $!\n";
print WRITEME <<EOF;
412c
module expbot_muxpaed_XXX (muxpaed_a, muxpaed_b, muxpaed_c, ef);
.
368c
module expbot_muxaed_XXX(muxaed, ef, topsign, movf, erop);
.
339c
module expbot_muxsad_XXX(muxsad_b, muxsad_a, safunc);
.
320c
module expbot_muxlimd_XXX(safunc, muxlimd);
.
309c
expbot_muxpaed_XXX  expbot3(.muxpaed_a(muxpaed_a), 
.
303c
expbot_muxaed_XXX  expbot2(.muxaed(muxaed), 
.
299c
expbot_muxsad_XXX  expbot1(.muxsad_b(muxsad_b), 
.
297c
expbot_muxlimd_XXX expbot0(.safunc(safunc), .muxlimd(muxlimd));
.
280c
module expbot_dec_XXX(muxlimd,muxsad_a,muxsad_b,
.
202c
module exptop_dec_XXX(mux1ad,mux2ad,mux2bd,addtcin,addlcin,ef,ef_rom0,ef_rom1,
.
189c
   case(expfunc)
.
180c
module exple_dec_XXX(le,topsign,bele,aele,azle,bzle,expfunc);
.
141c
module expreg_dec_XXX(cyc0_type,aexp_sel,bexp_sel);
.
113c
 expreg_dec_XXX expreg(	.cyc0_type(cyc0_type),
.
105c
 exple_dec_XXX expcomp(	.le(le),
.
85c
 expbot_dec_XXX expbot(	
.
68c
 exptop_dec_XXX exptop(	.mux1ad(mux1ad),
.
25c
module exponent_cntl_XXX(priout_l, topsign, le, morethree, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building exponent_cntl.v: $!\n";
$expected_cksum = "2448175712\\s+12424\\s+exponent_cntl.v";
chop($new_cksum = `cksum exponent_cntl.v`);
die "Checksum failed for file exponent_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### exponent_dp.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/exponent_dp.v > exponent_dp.v") or die "Couldn't fork while building exponent_dp.v: $!\n";
print WRITEME <<EOF;
359c
  case(nx_exconfunc)
.
346c
                case(nx_mconfunc)
.
330c
module excon_dec_XXX (	nx_excon,
.
92c
 excon_dec_XXX i_excon_dec_rom1(	.nx_excon(nx_excon_rom1),
.
86c
 excon_dec_XXX i_excon_dec_rom0(	.nx_excon(nx_excon_rom0),
.
26c
module exponent_dp_XXX (addtop, sa, expsame, bele, aele, azle, bzle,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building exponent_dp.v: $!\n";
$expected_cksum = "1047004831\\s+10836\\s+exponent_dp.v";
chop($new_cksum = `cksum exponent_dp.v`);
die "Checksum failed for file exponent_dp.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### f_fpu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/f_fpu.v > f_fpu.v") or die "Couldn't fork while building f_fpu.v: $!\n";
print WRITEME <<EOF;
322c
  multmod_XXX mult1(	.multout(multout),
.
280c
  mantissa_XXX man(		.a0func(a0func),
.
261c
  nxsign_XXX nxs(		.asignfunc(asignfunc),
.
204c
  code_seq_XXX cs(		.rsovfi(rsovfi),
.
182c
  prils_XXX prif(		.a1(a1),
.
149c
  rsadd_XXX rsa(		.saout(saout),
.
120c
  incmod_XXX inc(		.a1(a1),
.
80c
  exponent_XXX exp(		.aexpin(fpain[30:20]),
.
31c
module fpu_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building f_fpu.v: $!\n";
$expected_cksum = "2478236188\\s+9909\\s+f_fpu.v";
chop($new_cksum = `cksum f_fpu.v`);
die "Checksum failed for file f_fpu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### fdec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/fdec.v > fdec.v") or die "Couldn't fork while building fdec.v: $!\n";
print WRITEME <<EOF;
22c
module fdec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building fdec.v: $!\n";
$expected_cksum = "3480040680\\s+15464\\s+fdec.v";
chop($new_cksum = `cksum fdec.v`);
die "Checksum failed for file fdec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### fold_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/fold_dec.v > fold_dec.v") or die "Couldn't fork while building fold_dec.v: $!\n";
print WRITEME <<EOF;
89c
fdec_XXX	fdec_6(.opcode({ibuff_6,invalid_byte}),
.
86c
fdec_XXX	fdec_5(.opcode({ibuff_5,ibuff_6}),
.
83c
fdec_XXX	fdec_4(.opcode({ibuff_4,ibuff_5}),
.
80c
fdec_XXX	fdec_3(.opcode({ibuff_3,ibuff_4}),
.
77c
fdec_XXX	fdec_2(.opcode({ibuff_2,ibuff_3}),
.
74c
fdec_XXX	fdec_1(.opcode({ibuff_1,ibuff_2}),
.
71c
fdec_XXX	fdec_0(.opcode({ibuff_0,ibuff_1}),
.
22c
module fold_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building fold_dec.v: $!\n";
$expected_cksum = "698229663\\s+3307\\s+fold_dec.v";
chop($new_cksum = `cksum fold_dec.v`);
die "Checksum failed for file fold_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### fold_logic.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/fold_logic.v > fold_logic.v") or die "Couldn't fork while building fold_logic.v: $!\n";
print WRITEME <<EOF;
22c
module fold_logic_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building fold_logic.v: $!\n";
$expected_cksum = "3600847167\\s+2828\\s+fold_logic.v";
chop($new_cksum = `cksum fold_logic.v`);
die "Checksum failed for file fold_logic.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### fp_roms.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/fp_roms.v > fp_roms.v") or die "Couldn't fork while building fp_roms.v: $!\n";
print WRITEME <<EOF;
56a
always @ (int_adr)
  case (int_adr)
    8'h00:   mem1 = 64'h0000000000000000;
    8'h01:   mem1 = 64'h001cb80000022c00;
    8'h02:   mem1 = 64'h003c4c0000162800;
    8'h03:   mem1 = 64'h0020101801000006;
    8'h04:   mem1 = 64'h001094001600bc03;
    8'h05:   mem1 = 64'h003c1c18791e1dc2;
    8'h06:   mem1 = 64'h0001c000000c3800;
    8'h07:   mem1 = 64'h002c000017022800;
    8'h08:   mem1 = 64'h003c2400191e1dc2;
    8'h09:   mem1 = 64'h002c000017022800;
    8'h0a:   mem1 = 64'h001090001640bc37;
    8'h0b:   mem1 = 64'h002c403010000005;
    8'h0c:   mem1 = 64'h002c300119800080;
    8'h0d:   mem1 = 64'h001c380017680020;
    8'h0e:   mem1 = 64'h002c000514020000;
    8'h0f:   mem1 = 64'h0008200019810440;
    8'h10:   mem1 = 64'h003c7c0000142800;
    8'h11:   mem1 = 64'h002c000000020400;
    8'h12:   mem1 = 64'h003c240000042000;
    8'h13:   mem1 = 64'h0000400000000000;
    8'h14:   mem1 = 64'h001c6c0000022000;
    8'h15:   mem1 = 64'h002c000000020000;
    8'h16:   mem1 = 64'h002ca00080000800;
    8'h17:   mem1 = 64'h002c000017000000;
    8'h18:   mem1 = 64'h001d780000022400;
    8'h19:   mem1 = 64'h003c840000182800;
    8'h1a:   mem1 = 64'h003cec3000042400;
    8'h1b:   mem1 = 64'h002c000000000000;
    8'h1c:   mem1 = 64'h001ca80014494008;
    8'h1d:   mem1 = 64'h003c8c0520047400;
    8'h1e:   mem1 = 64'h002c78001600bc07;
    8'h1f:   mem1 = 64'h001c640000000000;
    8'h20:   mem1 = 64'h00189c0000000000;
    8'h21:   mem1 = 64'h001c800000200000;
    8'h22:   mem1 = 64'h0019cc0000000000;
    8'h23:   mem1 = 64'h003d600000142400;
    8'h24:   mem1 = 64'h002c38000e800000;
    8'h25:   mem1 = 64'h002c38000e800000;
    8'h26:   mem1 = 64'h002c000000000000;
    8'h27:   mem1 = 64'h0024980000000000;
    8'h28:   mem1 = 64'h002c000014200030;
    8'h29:   mem1 = 64'h001cbc0000022c00;
    8'h2a:   mem1 = 64'h0000bc0017080020;
    8'h2b:   mem1 = 64'h000004000e8a3800;
    8'h2c:   mem1 = 64'h001cb40014494008;
    8'h2d:   mem1 = 64'h002cc00017080020;
    8'h2e:   mem1 = 64'h003cc00000182c00;
    8'h2f:   mem1 = 64'h003cac0000180000;
    8'h30:   mem1 = 64'h0018c40000000000;
    8'h31:   mem1 = 64'h002c000400020000;
    8'h32:   mem1 = 64'h002c000000000000;
    8'h33:   mem1 = 64'h001cd00017480008;
    8'h34:   mem1 = 64'h002c000500020000;
    8'h35:   mem1 = 64'h003d0400001c2800;
    8'h36:   mem1 = 64'h0000400000000000;
    8'h37:   mem1 = 64'h0034e81373010404;
    8'h38:   mem1 = 64'h0000000000000000;
    8'h39:   mem1 = 64'h002c000500020000;
    8'h3a:   mem1 = 64'h003cec10101e1c05;
    8'h3b:   mem1 = 64'h002c000014022800;
    8'h3c:   mem1 = 64'h003cf400101e1c05;
    8'h3d:   mem1 = 64'h002c000014022800;
    8'h3e:   mem1 = 64'h0001480018020180;
    8'h3f:   mem1 = 64'h002c000000000000;
    8'h40:   mem1 = 64'h002e5800000c0400;
    8'h41:   mem1 = 64'h003cd80000162800;
    8'h42:   mem1 = 64'h001c540014020428;
    8'h43:   mem1 = 64'h003e540019043a82;
    8'h44:   mem1 = 64'h003de40000162000;
    8'h45:   mem1 = 64'h003e240000142800;
    8'h46:   mem1 = 64'h003e640000162800;
    8'h47:   mem1 = 64'h002c000010000005;
    8'h48:   mem1 = 64'h002d20011b000100;
    8'h49:   mem1 = 64'h002c000500020000;
    8'h4a:   mem1 = 64'h002d24000001c007;
    8'h4b:   mem1 = 64'h002d2c0119800080;
    8'h4c:   mem1 = 64'h001d240017080020;
    8'h4d:   mem1 = 64'h001e4c001709c020;
    8'h4e:   mem1 = 64'h0000a00003c00030;
    8'h4f:   mem1 = 64'h003d700500044800;
    8'h50:   mem1 = 64'h00010c000e8a3800;
    8'h51:   mem1 = 64'h003d740520044c00;
    8'h52:   mem1 = 64'h0028440000000000;
    8'h53:   mem1 = 64'h002d4c011b000100;
    8'h54:   mem1 = 64'h002c000500020000;
    8'h55:   mem1 = 64'h002e4c1800000002;
    8'h56:   mem1 = 64'h002d580119800080;
    8'h57:   mem1 = 64'h002c000000000000;
    8'h58:   mem1 = 64'h001d640000000000;
    8'h59:   mem1 = 64'h0025380003000000;
    8'h5a:   mem1 = 64'h003d880000140000;
    8'h5b:   mem1 = 64'h003d600000142400;
    8'h5c:   mem1 = 64'h003d600000142000;
    8'h5d:   mem1 = 64'h003d600000142000;
    8'h5e:   mem1 = 64'h002c000000000000;
    8'h5f:   mem1 = 64'h002ded42000c1000;
    8'h60:   mem1 = 64'h003da00000142800;
    8'h61:   mem1 = 64'h0015a40010000003;
    8'h62:   mem1 = 64'h001d8c0000000000;
    8'h63:   mem1 = 64'h002c000014020000;
    8'h64:   mem1 = 64'h002c000019800100;
    8'h65:   mem1 = 64'h003d980000182800;
    8'h66:   mem1 = 64'h001d9c0000200000;
    8'h67:   mem1 = 64'h0025840721000001;
    8'h68:   mem1 = 64'h001d940000000000;
    8'h69:   mem1 = 64'h002da400198a3880;
    8'h6a:   mem1 = 64'h001db40000000000;
    8'h6b:   mem1 = 64'h001db00000200000;
    8'h6c:   mem1 = 64'h002c000014000000;
    8'h6d:   mem1 = 64'h003dac0000180000;
    8'h6e:   mem1 = 64'h003d6c0500045400;
    8'h6f:   mem1 = 64'h002dd38014060438;
    8'h70:   mem1 = 64'h003dc40000162400;
    8'h71:   mem1 = 64'h0000400000000000;
    8'h72:   mem1 = 64'h002c000014022400;
    8'h73:   mem1 = 64'h002c000000000000;
    8'h74:   mem1 = 64'h001e1800000002c0;
    8'h75:   mem1 = 64'h001dd80000200000;
    8'h76:   mem1 = 64'h002c000517022830;
    8'h77:   mem1 = 64'h0008f00018000183;
    8'h78:   mem1 = 64'h002c000517022830;
    8'h79:   mem1 = 64'h0000400000000000;
    8'h7a:   mem1 = 64'h0000000000000000;
    8'h7b:   mem1 = 64'h002df1c000000000;
    8'h7c:   mem1 = 64'h002df64000000000;
    8'h7d:   mem1 = 64'h002dfac000000000;
    8'h7e:   mem1 = 64'h0002534014000038;
    8'h7f:   mem1 = 64'h002c34000001c000;
    8'h80:   mem1 = 64'h00020c0019522e82;
    8'h81:   mem1 = 64'h00011c0061120402;
    8'h82:   mem1 = 64'h002c000000020000;
    8'h83:   mem1 = 64'h002e10000e8a0000;
    8'h84:   mem1 = 64'h002a1c00c0023ac0;
    8'h85:   mem1 = 64'h002c340000000003;
    8'h86:   mem1 = 64'h001a14001981c243;
    8'h87:   mem1 = 64'h0001d000190001c2;
    8'h88:   mem1 = 64'h002c000517022830;
    8'h89:   mem1 = 64'h001e2800000a3800;
    8'h8a:   mem1 = 64'h003e2c000e942800;
    8'h8b:   mem1 = 64'h001e300500000000;
    8'h8c:   mem1 = 64'h002c000517022830;
    8'h8d:   mem1 = 64'h001e380000000000;
    8'h8e:   mem1 = 64'h002c000200020000;
    8'h8f:   mem1 = 64'h001e400000000000;
    8'h90:   mem1 = 64'h003e44000e940000;
    8'h91:   mem1 = 64'h001e200000000000;
    8'h92:   mem1 = 64'h00255c0019000005;
    8'h93:   mem1 = 64'h002c000500020000;
    8'h94:   mem1 = 64'h0029fc0000130400;
    8'h95:   mem1 = 64'h003e60000e943800;
    8'h96:   mem1 = 64'h002a5c00c00a3a00;
    8'h97:   mem1 = 64'h002e5c00f98c0600;
    8'h98:   mem1 = 64'h002a5c00c00a3a00;
    8'h99:   mem1 = 64'h003e680000142800;
    8'h9a:   mem1 = 64'h001e6c0000000000;
    8'h9b:   mem1 = 64'h003e700000182800;
    8'h9c:   mem1 = 64'h001e30050ea00000;
    8'h9d:   mem1 = 64'h001de00000200000;
    8'h9e:   mem1 = 64'h002c000000000000;
    8'h9f:   mem1 = 64'h002c000000000000;
    8'ha0:   mem1 = 64'h0000000000000000;
    8'ha1:   mem1 = 64'h0000000000000000;
    8'ha2:   mem1 = 64'h0000000000000000;
    8'ha3:   mem1 = 64'h0000000000000000;
    8'ha4:   mem1 = 64'h0000000000000000;
    8'ha5:   mem1 = 64'h0000000000000000;
    8'ha6:   mem1 = 64'h0000000000000000;
    8'ha7:   mem1 = 64'h0000000000000000;
    8'ha8:   mem1 = 64'h0000000000000000;
    8'ha9:   mem1 = 64'h0000000000000000;
    8'haa:   mem1 = 64'h0000000000000000;
    8'hab:   mem1 = 64'h0000000000000000;
    8'hac:   mem1 = 64'h0000000000000000;
    8'had:   mem1 = 64'h0000000000000000;
    8'hae:   mem1 = 64'h0000000000000000;
    8'haf:   mem1 = 64'h0000000000000000;
    8'hb0:   mem1 = 64'h0000000000000000;
    8'hb1:   mem1 = 64'h0000000000000000;
    8'hb2:   mem1 = 64'h0000000000000000;
    8'hb3:   mem1 = 64'h0000000000000000;
    8'hb4:   mem1 = 64'h0000000000000000;
    8'hb5:   mem1 = 64'h0000000000000000;
    8'hb6:   mem1 = 64'h0000000000000000;
    8'hb7:   mem1 = 64'h0000000000000000;
    8'hb8:   mem1 = 64'h0000000000000000;
    8'hb9:   mem1 = 64'h0000000000000000;
    8'hba:   mem1 = 64'h0000000000000000;
    8'hbb:   mem1 = 64'h0000000000000000;
    8'hbc:   mem1 = 64'h0000000000000000;
    8'hbd:   mem1 = 64'h0000000000000000;
    8'hbe:   mem1 = 64'h0000000000000000;
    8'hbf:   mem1 = 64'h0000000000000000;
    default: mem1 = 64'hx;
  endcase

.
55c
always @ (int_adr)
  case (int_adr)
    8'h00:   mem0 = 64'h0000000000000000;
    8'h01:   mem0 = 64'h003c0800001c2800;
    8'h02:   mem0 = 64'h00240c0b448ef800;
    8'h03:   mem0 = 64'h0020280019800080;
    8'h04:   mem0 = 64'h0034143010010403;
    8'h05:   mem0 = 64'h0008200019810440;
    8'h06:   mem0 = 64'h000dbc82000c1800;
    8'h07:   mem0 = 64'h0008200019810440;
    8'h08:   mem0 = 64'h003c480000044400;
    8'h09:   mem0 = 64'h002c000000000000;
    8'h0a:   mem0 = 64'h002c2c1801000001;
    8'h0b:   mem0 = 64'h0030300810000003;
    8'h0c:   mem0 = 64'h001c34001449400b;
    8'h0d:   mem0 = 64'h003c3c280384441b;
    8'h0e:   mem0 = 64'h003c480000044400;
    8'h0f:   mem0 = 64'h0020780000000003;
    8'h10:   mem0 = 64'h0001480019820040;
    8'h11:   mem0 = 64'h002c000000000000;
    8'h12:   mem0 = 64'h0020780000000000;
    8'h13:   mem0 = 64'h002ca00080000000;
    8'h14:   mem0 = 64'h003d080000140000;
    8'h15:   mem0 = 64'h00005800000a0000;
    8'h16:   mem0 = 64'h003c500003142400;
    8'h17:   mem0 = 64'h002dd000000c3003;
    8'h18:   mem0 = 64'h003c5c0000140003;
    8'h19:   mem0 = 64'h002c000500000000;
    8'h1a:   mem0 = 64'h003c60000015e007;
    8'h1b:   mem0 = 64'h002c000500000000;
    8'h1c:   mem0 = 64'h003c740600041800;
    8'h1d:   mem0 = 64'h002c000514000000;
    8'h1e:   mem0 = 64'h00002c1821000002;
    8'h1f:   mem0 = 64'h001c88060eaa3800;
    8'h20:   mem0 = 64'h002c00050e800000;
    8'h21:   mem0 = 64'h0019cc0000002800;
    8'h22:   mem0 = 64'h002c000500000000;
    8'h23:   mem0 = 64'h0022480001000002;
    8'h24:   mem0 = 64'h002c2c1801000001;
    8'h25:   mem0 = 64'h002c101801000001;
    8'h26:   mem0 = 64'h002c000517000030;
    8'h27:   mem0 = 64'h002c000200000000;
    8'h28:   mem0 = 64'h003ca40000140000;
    8'h29:   mem0 = 64'h000004000e8a3800;
    8'h2a:   mem0 = 64'h0000bc0003800018;
    8'h2b:   mem0 = 64'h002c3c00a0000000;
    8'h2c:   mem0 = 64'h0004d40b5c01b8c0;
    8'h2d:   mem0 = 64'h002cc00003800018;
    8'h2e:   mem0 = 64'h0000b00014020428;
    8'h2f:   mem0 = 64'h0000700014020428;
    8'h30:   mem0 = 64'h002cac000e8a3800;
    8'h31:   mem0 = 64'h002c000200020000;
    8'h32:   mem0 = 64'h002c000019800080;
    8'h33:   mem0 = 64'h002c000018100540;
    8'h34:   mem0 = 64'h002c000000000000;
    8'h35:   mem0 = 64'h0038cc08100e3804;
    8'h36:   mem0 = 64'h002ca00080000400;
    8'h37:   mem0 = 64'h002ce01013000004;
    8'h38:   mem0 = 64'h001ce42017480408;
    8'h39:   mem0 = 64'h0008f00078010580;
    8'h3a:   mem0 = 64'h0008f00078010580;
    8'h3b:   mem0 = 64'h0008f00078010580;
    8'h3c:   mem0 = 64'h003cfc0020044403;
    8'h3d:   mem0 = 64'h003cfc0020044400;
    8'h3e:   mem0 = 64'h003db80603041800;
    8'h3f:   mem0 = 64'h0000f81010000085;
    8'h40:   mem0 = 64'h00240c0b448ef800;
    8'h41:   mem0 = 64'h0024dc035c0fb8c0;
    8'h42:   mem0 = 64'h002c000000123000;
    8'h43:   mem0 = 64'h002c184000123800;
    8'h44:   mem0 = 64'h00017d0000123800;
    8'h45:   mem0 = 64'h002e0c0019810680;
    8'h46:   mem0 = 64'h0001400019810680;
    8'h47:   mem0 = 64'h0029200523021400;
    8'h48:   mem0 = 64'h001d24001449c008;
    8'h49:   mem0 = 64'h002cec1000000005;
    8'h4a:   mem0 = 64'h00292c0500023400;
    8'h4b:   mem0 = 64'h001d300014494008;
    8'h4c:   mem0 = 64'h0001280003800018;
    8'h4d:   mem0 = 64'h000154000381c018;
    8'h4e:   mem0 = 64'h002c000014600030;
    8'h4f:   mem0 = 64'h002c000014000000;
    8'h50:   mem0 = 64'h003d440600041000;
    8'h51:   mem0 = 64'h002c000017000000;
    8'h52:   mem0 = 64'h00294c0503020800;
    8'h53:   mem0 = 64'h001d500014480008;
    8'h54:   mem0 = 64'h002c000000000000;
    8'h55:   mem0 = 64'h0029580500020c00;
    8'h56:   mem0 = 64'h001d340014494008;
    8'h57:   mem0 = 64'h002c000019800080;
    8'h58:   mem0 = 64'h0025380003000000;
    8'h59:   mem0 = 64'h002c000017000000;
    8'h5a:   mem0 = 64'h003d3c0600041000;
    8'h5b:   mem0 = 64'h002e480023000000;
    8'h5c:   mem0 = 64'h002e480023000000;
    8'h5d:   mem0 = 64'h0022480001000002;
    8'h5e:   mem0 = 64'h002c000517000030;
    8'h5f:   mem0 = 64'h003d8000001de800;
    8'h60:   mem0 = 64'h00019c0019800080;
    8'h61:   mem0 = 64'h0025900014400030;
    8'h62:   mem0 = 64'h003d900014440430;
    8'h63:   mem0 = 64'h0029900014400030;
    8'h64:   mem0 = 64'h002c000000002400;
    8'h65:   mem0 = 64'h0019900014400030;
    8'h66:   mem0 = 64'h003da80019940080;
    8'h67:   mem0 = 64'h0019900014400030;
    8'h68:   mem0 = 64'h003d980000182800;
    8'h69:   mem0 = 64'h00016800000c3800;
    8'h6a:   mem0 = 64'h0025840721000001;
    8'h6b:   mem0 = 64'h0025840721000001;
    8'h6c:   mem0 = 64'h0025840721000001;
    8'h6d:   mem0 = 64'h0025840721000001;
    8'h6e:   mem0 = 64'h002c000517000000;
    8'h6f:   mem0 = 64'h002c00c014060438;
    8'h70:   mem0 = 64'h003c1840001a2400;
    8'h71:   mem0 = 64'h002ca00080000c00;
    8'h72:   mem0 = 64'h003ddc1000040405;
    8'h73:   mem0 = 64'h003dd40200180000;
    8'h74:   mem0 = 64'h003dc8002005e403;
    8'h75:   mem0 = 64'h002c000000000000;
    8'h76:   mem0 = 64'h002c000000000000;
    8'h77:   mem0 = 64'h002cfc0000004403;
    8'h78:   mem0 = 64'h002ca00080001800;
    8'h79:   mem0 = 64'h002ca00080001000;
    8'h7a:   mem0 = 64'h003d1000001c2000;
    8'h7b:   mem0 = 64'h0001ed8000000000;
    8'h7c:   mem0 = 64'h0001f20000000000;
    8'h7d:   mem0 = 64'h0001f68000000000;
    8'h7e:   mem0 = 64'h0001fb0003800038;
    8'h7f:   mem0 = 64'h002c3400140c0410;
    8'h80:   mem0 = 64'h003d1400201c2800;
    8'h81:   mem0 = 64'h002c000000000000;
    8'h82:   mem0 = 64'h002c300000000000;
    8'h83:   mem0 = 64'h000200020e8c3800;
    8'h84:   mem0 = 64'h003e100019be2e00;
    8'h85:   mem0 = 64'h002dd00000000003;
    8'h86:   mem0 = 64'h00021800e00002c3;
    8'h87:   mem0 = 64'h00021c00198c0600;
    8'h88:   mem0 = 64'h002c000217022800;
    8'h89:   mem0 = 64'h003e34000e982800;
    8'h8a:   mem0 = 64'h002c0005000a3800;
    8'h8b:   mem0 = 64'h002c00020e8a3800;
    8'h8c:   mem0 = 64'h002c000000000000;
    8'h8d:   mem0 = 64'h003e3c0000180000;
    8'h8e:   mem0 = 64'h002c000500022800;
    8'h8f:   mem0 = 64'h002ca0008e801400;
    8'h90:   mem0 = 64'h002ca0008e801400;
    8'h91:   mem0 = 64'h002c000217022800;
    8'h92:   mem0 = 64'h0024c80010000005;
    8'h93:   mem0 = 64'h000a040019810440;
    8'h94:   mem0 = 64'h003d1800201c2800;
    8'h95:   mem0 = 64'h000100000e8a3800;
    8'h96:   mem0 = 64'h003e5800f9943a00;
    8'h97:   mem0 = 64'h001e0800e0120400;
    8'h98:   mem0 = 64'h0002500000023800;
    8'h99:   mem0 = 64'h003e740000180000;
    8'h9a:   mem0 = 64'h001e7c0000200000;
    8'h9b:   mem0 = 64'h002c000500000000;
    8'h9c:   mem0 = 64'h002c000517000030;
    8'h9d:   mem0 = 64'h001e780000000000;
    8'h9e:   mem0 = 64'h002ca00080001800;
    8'h9f:   mem0 = 64'h002c00050e823800;
    8'ha0:   mem0 = 64'h0000000000000000;
    8'ha1:   mem0 = 64'h0000000000000000;
    8'ha2:   mem0 = 64'h0000000000000000;
    8'ha3:   mem0 = 64'h0000000000000000;
    8'ha4:   mem0 = 64'h0000000000000000;
    8'ha5:   mem0 = 64'h0000000000000000;
    8'ha6:   mem0 = 64'h0000000000000000;
    8'ha7:   mem0 = 64'h0000000000000000;
    8'ha8:   mem0 = 64'h0000000000000000;
    8'ha9:   mem0 = 64'h0000000000000000;
    8'haa:   mem0 = 64'h0000000000000000;
    8'hab:   mem0 = 64'h0000000000000000;
    8'hac:   mem0 = 64'h0000000000000000;
    8'had:   mem0 = 64'h0000000000000000;
    8'hae:   mem0 = 64'h0000000000000000;
    8'haf:   mem0 = 64'h0000000000000000;
    8'hb0:   mem0 = 64'h0000000000000000;
    8'hb1:   mem0 = 64'h0000000000000000;
    8'hb2:   mem0 = 64'h0000000000000000;
    8'hb3:   mem0 = 64'h0000000000000000;
    8'hb4:   mem0 = 64'h0000000000000000;
    8'hb5:   mem0 = 64'h0000000000000000;
    8'hb6:   mem0 = 64'h0000000000000000;
    8'hb7:   mem0 = 64'h0000000000000000;
    8'hb8:   mem0 = 64'h0000000000000000;
    8'hb9:   mem0 = 64'h0000000000000000;
    8'hba:   mem0 = 64'h0000000000000000;
    8'hbb:   mem0 = 64'h0000000000000000;
    8'hbc:   mem0 = 64'h0000000000000000;
    8'hbd:   mem0 = 64'h0000000000000000;
    8'hbe:   mem0 = 64'h0000000000000000;
    8'hbf:   mem0 = 64'h0000000000000000;
    default: mem0 = 64'hx;
  endcase
.
51,52c
        do0 <= (int_enable) ? mem0: do0;
        do1 <= (int_enable) ? mem1: do1;
.
43,49d
40,41c
always @ (posedge clk) begin
  int_adr <= tm ? tadr:adr ;
  int_enable <= tm ? te : (rom_en & me);
  end
.
37,38c
reg    [7:0]   int_adr;
reg            int_enable;
.
33,35c
reg    [63:0] mem0;
reg    [63:0] mem1;
reg    [63:0] do1,do0;
.
24c
module fp_roms_XXX(rom_en,adr,clk,do1,do0,te,tadr,me, tm);
.
22a
// make a synthesizable pipelined ROM
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building fp_roms.v: $!\n";
$expected_cksum = "3191416974\\s+17994\\s+fp_roms.v";
chop($new_cksum = `cksum fp_roms.v`);
die "Checksum failed for file fp_roms.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### hold_logic.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/pipe/rtl/hold_logic.v > hold_logic.v") or die "Couldn't fork while building hold_logic.v: $!\n";
print WRITEME <<EOF;
22c
module	hold_logic_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building hold_logic.v: $!\n";
$expected_cksum = "1339145224\\s+7433\\s+hold_logic.v";
chop($new_cksum = `cksum hold_logic.v`);
die "Checksum failed for file hold_logic.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ibuf_ctl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/icu/rtl/ibuf_ctl.v > ibuf_ctl.v") or die "Couldn't fork while building ibuf_ctl.v: $!\n";
print WRITEME <<EOF;
638c
module ibuf_ctl_slice_XXX (
.
626a
    default     : encod_shift_e = 3'bxxx;
.
618c
    casex(iu_shift_e)
.
609c
module encode_shift_module_XXX( iu_shift_e, encod_shift_e); 
.
595c
encode_shift_module_XXX i_encode_shift_module
.
378c
ibuf_ctl_slice_XXX  ibuf_ctl_15 (.valid_bits(7'b0),
.
359c
ibuf_ctl_slice_XXX  ibuf_ctl_14 (.valid_bits({6'b0,buf_ic_valid[15]}),
.
340c
ibuf_ctl_slice_XXX  ibuf_ctl_13 (.valid_bits({5'b0,buf_ic_valid[15:14]}),
.
321c
ibuf_ctl_slice_XXX  ibuf_ctl_12 (.valid_bits({4'b0,buf_ic_valid[15:13]}),
.
302c
ibuf_ctl_slice_XXX  ibuf_ctl_11 (.valid_bits({3'b0,buf_ic_valid[15:12]}),
.
283c
ibuf_ctl_slice_XXX  ibuf_ctl_10 (.valid_bits({2'b0,buf_ic_valid[15:11]}),
.
264c
ibuf_ctl_slice_XXX  ibuf_ctl_9 (.valid_bits({1'b0,buf_ic_valid[15:10]}),
.
245c
ibuf_ctl_slice_XXX  ibuf_ctl_8 (.valid_bits(buf_ic_valid[15:9]),
.
226c
ibuf_ctl_slice_XXX  ibuf_ctl_7 (.valid_bits(buf_ic_valid[14:8]),
.
207c
ibuf_ctl_slice_XXX  ibuf_ctl_6 (.valid_bits(buf_ic_valid[13:7]),
.
188c
ibuf_ctl_slice_XXX  ibuf_ctl_5 (.valid_bits(buf_ic_valid[12:6]),
.
169c
ibuf_ctl_slice_XXX  ibuf_ctl_4 (.valid_bits(buf_ic_valid[11:5]),
.
150c
ibuf_ctl_slice_XXX  ibuf_ctl_3 (.valid_bits(buf_ic_valid[10:4]),
.
131c
ibuf_ctl_slice_XXX  ibuf_ctl_2 (.valid_bits(buf_ic_valid[9:3]),
.
112c
ibuf_ctl_slice_XXX	ibuf_ctl_1 (.valid_bits(buf_ic_valid[8:2]),
.
93c
ibuf_ctl_slice_XXX	ibuf_ctl_0 (.valid_bits(buf_ic_valid[7:1]),
.
26c
module ibuf_ctl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ibuf_ctl.v: $!\n";
$expected_cksum = "485550546\\s+23824\\s+ibuf_ctl.v";
chop($new_cksum = `cksum ibuf_ctl.v`);
die "Checksum failed for file ibuf_ctl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ibuffer.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/icu/rtl/ibuffer.v > ibuffer.v") or die "Couldn't fork while building ibuffer.v: $!\n";
print WRITEME <<EOF;
500c
module ibuf_slice_XXX (
.
438c
ibuf_slice_XXX	ibuf_15 (.icache_data(icache_data),
.
421c
ibuf_slice_XXX	ibuf_14 (.icache_data(icache_data),
.
404c
ibuf_slice_XXX	ibuf_13 (.icache_data(icache_data),
.
386c
ibuf_slice_XXX	ibuf_12 (.icache_data(icache_data),
.
363c
ibuf_slice_XXX	ibuf_11 (.icache_data(icache_data),
.
340c
ibuf_slice_XXX	ibuf_10 (.icache_data(icache_data),
.
317c
ibuf_slice_XXX	ibuf_9 (.icache_data(icache_data),
.
294c
ibuf_slice_XXX	ibuf_8 (.icache_data(icache_data),
.
271c
ibuf_slice_XXX	ibuf_7 (.icache_data(icache_data),
.
248c
ibuf_slice_XXX	ibuf_6 (.icache_data(icache_data),
.
231c
ibuf_slice_XXX	ibuf_5 (.icache_data(icache_data),
.
214c
ibuf_slice_XXX	ibuf_4 (.icache_data(icache_data),
.
197c
ibuf_slice_XXX	ibuf_3 (.icache_data(icache_data),
.
180c
ibuf_slice_XXX	ibuf_2 (.icache_data(icache_data),
.
163c
ibuf_slice_XXX	ibuf_1 (.icache_data(icache_data),
.
146c
ibuf_slice_XXX	ibuf_0 (.icache_data(icache_data),
.
27c
module	ibuffer_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ibuffer.v: $!\n";
$expected_cksum = "157810787\\s+21563\\s+ibuffer.v";
chop($new_cksum = `cksum ibuffer.v`);
die "Checksum failed for file ibuffer.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ic_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/icu/rtl/ic_cntl.v > ic_cntl.v") or die "Couldn't fork while building ic_cntl.v: $!\n";
print WRITEME <<EOF;
642c
case    (cur_state)
.
26c
module  ic_cntl_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ic_cntl.v: $!\n";
$expected_cksum = "3510877368\\s+25298\\s+ic_cntl.v";
chop($new_cksum = `cksum ic_cntl.v`);
die "Checksum failed for file ic_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### icctl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/icu/rtl/icctl.v > icctl.v") or die "Couldn't fork while building icctl.v: $!\n";
print WRITEME <<EOF;
175c
ibuf_ctl_XXX ibuf_ctl (
.
131c
ic_cntl_XXX ic_cntl (
.
25c
module icctl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building icctl.v: $!\n";
$expected_cksum = "2065301653\\s+10741\\s+icctl.v";
chop($new_cksum = `cksum icctl.v`);
die "Checksum failed for file icctl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### icram_dummy.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/icram/rtl/icram_dummy.v > icram_dummy.v") or die "Couldn't fork while building icram_dummy.v: $!\n";
print WRITEME <<EOF;
62a
  icram_dout <= {icu_din_dly2,icu_din_dly} ^ icu_addr_dly;
  icache_test_err_l <= ^{
			 icu_ram_we_dly,
			 enable_dly,
			 test_mode_dly,
			 bist_mode_dly,
			 bist_reset};
end

.
61a
always @ (posedge clk) begin
  icu_din_dly <= icu_din;
  icu_din_dly2 <= icu_din_dly;
  icu_ram_we_dly <= icu_ram_we;
  enable_dly <= enable;
  icu_addr_dly <= icu_addr;
  test_mode_dly <= test_mode;
  bist_mode_dly <= bist_mode;
  bist_reset_dly <= bist_reset;
.
56,60c
reg       [31:0]      icu_din_dly,icu_din_dly2;
reg        [1:0]      icu_ram_we_dly;
reg                   enable_dly;
reg  [`ic_msb:3]      icu_addr_dly;
reg                   test_mode_dly;
reg        [1:0]      bist_mode_dly;
reg                   bist_reset_dly;
reg      [63:0]       icram_dout;
reg                   icache_test_err_l;
.
27c
module  icram_dummy_XXX(   icu_din,
.
23a
// this replaces icram_shell with random synthesizable logic
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building icram_dummy.v: $!\n";
$expected_cksum = "1386042587\\s+3171\\s+icram_dummy.v";
chop($new_cksum = `cksum icram_dummy.v`);
die "Checksum failed for file icram_dummy.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### icu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/icu/rtl/icu.v > icu.v") or die "Couldn't fork while building icu.v: $!\n";
print WRITEME <<EOF;
190c
icu_dpath_XXX icu_dpath (
.
140c
icctl_XXX icctl (
.
27c
module icu_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building icu.v: $!\n";
$expected_cksum = "2601671381\\s+12294\\s+icu.v";
chop($new_cksum = `cksum icu.v`);
die "Checksum failed for file icu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### icu_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/icu/rtl/icu_dpath.v > icu_dpath.v") or die "Couldn't fork while building icu_dpath.v: $!\n";
print WRITEME <<EOF;
525c
module ic_len_decoder_XXX ( opcode,
.
372c
module	ic_aligner_XXX (
.
351c
ibuffer_XXX			ibuffer (
.
341,348c
ic_len_decoder_XXX opcode_len_encode_0(.opcode(align_data[63:56]), .len(encode_oplen[31:28]));
ic_len_decoder_XXX opcode_len_encode_1(.opcode(align_data[55:48]), .len(encode_oplen[27:24]));
ic_len_decoder_XXX opcode_len_encode_2(.opcode(align_data[47:40]), .len(encode_oplen[23:20]));
ic_len_decoder_XXX opcode_len_encode_3(.opcode(align_data[39:32]), .len(encode_oplen[19:16]));
ic_len_decoder_XXX opcode_len_encode_4(.opcode(align_data[31:24]), .len(encode_oplen[15:12]));
ic_len_decoder_XXX opcode_len_encode_5(.opcode(align_data[23:16]), .len(encode_oplen[11:8]));
ic_len_decoder_XXX opcode_len_encode_6(.opcode(align_data[15:8]), .len(encode_oplen[7:4]));
ic_len_decoder_XXX opcode_len_encode_7(.opcode(align_data[7:0]), .len(encode_oplen[3:0]));
.
334c
ic_aligner_XXX		ic_aligner(
.
26c
module icu_dpath_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building icu_dpath.v: $!\n";
$expected_cksum = "751915459\\s+17987\\s+icu_dpath.v";
chop($new_cksum = `cksum icu_dpath.v`);
die "Checksum failed for file icu_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ieu_rom.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ieu_rom.v > ieu_rom.v") or die "Couldn't fork while building ieu_rom.v: $!\n";
print WRITEME <<EOF;
29,45d
22c
module ieu_rom_XXX (nxt_ucode_cnt,rom_data);          
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ieu_rom.v: $!\n";
$expected_cksum = "4256646455\\s+17809\\s+ieu_rom.v";
chop($new_cksum = `cksum ieu_rom.v`);
die "Checksum failed for file ieu_rom.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ifu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/ifu.v > ifu.v") or die "Couldn't fork while building ifu.v: $!\n";
print WRITEME <<EOF;
558c
main_dec_XXX	main_dec (.ibuff_0(ibuff_0),
.
460c
fold_logic_XXX	fold_logic (.F0(inst_1_type),
.
393c
fold_dec_XXX	fold_dec (.ibuff_0(ibuff_0),
.
366c
valid_dec_XXX	valid_dec (.fetch_valid(fetch_valid),
.
342c
length_dec_XXX	length_dec (.fetch_len0(fetch_len0),
.
327c
ex_len_dec_XXX	ex_len_dec (.opcode(ibuff_0),
.
23c
module ifu_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ifu.v: $!\n";
$expected_cksum = "2940331153\\s+34214\\s+ifu.v";
chop($new_cksum = `cksum ifu.v`);
die "Checksum failed for file ifu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### imdr.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/imdr/imdr.v > imdr.v") or die "Couldn't fork while building imdr.v: $!\n";
print WRITEME <<EOF;
148c
imdr_ctrl_XXX imdr_ctrl_0 (
.
84c
imdr_dpath_XXX imdr_dpath_0 (
.
22c
module imdr_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building imdr.v: $!\n";
$expected_cksum = "3181825987\\s+8504\\s+imdr.v";
chop($new_cksum = `cksum imdr.v`);
die "Checksum failed for file imdr.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### imdr_ctrl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/imdr/imdr_ctrl.v > imdr_ctrl.v") or die "Couldn't fork while building imdr_ctrl.v: $!\n";
print WRITEME <<EOF;
347c
    case (st)
.
22c
module imdr_ctrl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building imdr_ctrl.v: $!\n";
$expected_cksum = "3771172007\\s+17976\\s+imdr_ctrl.v";
chop($new_cksum = `cksum imdr_ctrl.v`);
die "Checksum failed for file imdr_ctrl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### imdr_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/imdr/imdr_dpath.v > imdr_dpath.v") or die "Couldn't fork while building imdr_dpath.v: $!\n";
print WRITEME <<EOF;
436c
dpath_ctrl_XXX dpath_ctrl_0 (
.
411c
sign_bit_XXX sign_bit_0 (
.
387c
  compl_32_XXX compl_32_b (
.
372c
  b_recoder_XXX b_recoder_0 (
.
351c
  zero_det_XXX zero_det_0 (
.
336c
  inv1_32_XXX inv1_32_a (.inp(sum_dly), .out_(sum_) );
.
327,328c
reg [31:0] sum_dly;
always @ (posedge clk) sum_dly <= sum;

  mx2_compl_32_XXX mx2_compl_32_a (
                               .inp1(sum_dly),
.
308c
  mx2_neg_33_XXX mx2_neg_33_b (
.
293c
  rsh16_33_XXX rsh16_33_b (
.
267c
  mx2_neg_33_XXX mx2_neg_33_a (
.
256c
  an2_32_XXX an2_32_0 (.inp1({32{clr_aop_}}), .inp0(ra), .out(aop_1x[31:0]) );
.
242c
  mx4_clr_reg_nxt_32_XXX mx4_clr_reg_nxt_32_bb ( 
.
231c
  mx4_clr_reg_32_XXX mx4_clr_reg_32_b  ( 
.
220c
  mx4_clr_reg_32_XXX mx4_clr_reg_32_a  ( 
.
209c
  mx4_clr_reg_33_XXX mx4_clr_reg_33_ac (
.
22c
module imdr_dpath_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building imdr_dpath.v: $!\n";
$expected_cksum = "560698333\\s+17288\\s+imdr_dpath.v";
chop($new_cksum = `cksum imdr_dpath.v`);
die "Checksum failed for file imdr_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### incmod.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/incmod.v > incmod.v") or die "Couldn't fork while building incmod.v: $!\n";
print WRITEME <<EOF;
656c
     casex(nx_incfunc_rom)
.
648c
module inc_l0md_rom_XXX(nx_incfunc_rom, l0md_rom);
.
633c
    casex(nx_incfunc_rom)
.
626c
module inc_l1md_rom_XXX (l1md_rom, nx_incfunc_rom);
.
610c
    casex(nx_incfunc_rom)
.
602c
module inc_t0md_rom_XXX (t0md_rom, nx_incfunc_rom);
.
584c
    casex(nx_incfunc_rom)
.
570c
    casex(nx_incfunc_rom)
.
562c
module inc_t1mdb_rom_XXX (t1mdb_1_rom, t1mdb_0_rom, nx_incfunc_rom);
.
543c
    casex(nx_incfunc_rom)
.
535c
module inc_t1mda_rom_XXX (t1mda_rom, nx_incfunc_rom);
.
468c
inc_l0md_rom_XXX i10 (	.l0md_rom(l0md_rom1), 
.
466c
inc_l0md_rom_XXX i9 (	.l0md_rom(l0md_rom0), 
.
463c
inc_l1md_rom_XXX i8 (	.l1md_rom(l1md_rom1), 
.
461c
inc_l1md_rom_XXX i7 (	.l1md_rom(l1md_rom0), 
.
458c
inc_t0md_rom_XXX i6 (	.t0md_rom(t0md_rom1), 
.
456c
inc_t0md_rom_XXX i5 (	.t0md_rom(t0md_rom0), 
.
453c
inc_t1mda_rom_XXX i1 (	.t1mda_rom(t1mda_rom1), 	
.
451c
inc_t1mda_rom_XXX i0 (	.t1mda_rom(t1mda_rom0), 
.
405c
module inc_decode_XXX(	t1md, 
.
309c
module div_decode_XXX(	divmd0, 
.
106c
 div_decode_XXX divdec(	.divmd0(divmd0),
.
84c
 inc_decode_XXX incdec(	.t1md(t1md),
.
23c
module incmod_XXX(	a1, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building incmod.v: $!\n";
$expected_cksum = "1386050107\\s+15421\\s+incmod.v";
chop($new_cksum = `cksum incmod.v`);
die "Checksum failed for file incmod.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### index_adders.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/index_adders.v > index_adders.v") or die "Couldn't fork while building index_adders.v: $!\n";
print WRITEME <<EOF;
156c
module index6_add_XXX (
.
129c
module index5_add_XXX (
.
102c
module index4_add_XXX (
.
75c
module index3_add_XXX (
.
49c
module index2_add_XXX (
.
22c
module index1_add_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building index_adders.v: $!\n";
$expected_cksum = "3388957182\\s+3457\\s+index_adders.v";
chop($new_cksum = `cksum index_adders.v`);
die "Checksum failed for file index_adders.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### itag_dummy.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/itag/rtl/itag_dummy.v > itag_dummy.v") or die "Couldn't fork while building itag_dummy.v: $!\n";
print WRITEME <<EOF;
71,76c
  itag_dout <= icu_tag_in_dly ^ icu_tag_addr_dly;
  itag_vld <= icu_tag_vld_dly;
  ic_hit <= ^{icu_tag_we_dly,enable_dly};
  itag_test_err_l <= ^{
		       test_mode_dly,
		       bist_mode_dly,
		       bist_reset_dly};
end
  
.
67,69c
always @ (posedge clk) begin
  icu_tag_in_dly <= icu_tag_in;
  icu_tag_vld_dly <= icu_tag_vld;
  icu_tag_we_dly <= icu_tag_we;
  icu_tag_addr_dly <= icu_tag_addr;
  enable_dly <= enable;
  test_mode_dly <= test_mode;
  bist_mode_dly <= bist_mode;
  bist_reset_dly <= bist_reset;
.
64,65c
reg     [`it_msb:0]     icu_tag_in_dly;
reg                     icu_tag_vld_dly;
reg                     icu_tag_we_dly;
reg     [`ic_msb:4]     icu_tag_addr_dly;
reg                     enable_dly;
reg                     test_mode_dly;
reg           [1:0]     bist_mode_dly;
reg                     bist_reset_dly;
reg     [`it_msb:0]     itag_dout;
reg                     itag_vld;
reg                     ic_hit;
reg                     itag_test_err_l;
.
28c
module  itag_dummy_XXX (    icu_tag_in,
.
24a
// this replaces itag_shell with random synthesizable logic
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building itag_dummy.v: $!\n";
$expected_cksum = "1917373493\\s+3631\\s+itag_dummy.v";
chop($new_cksum = `cksum itag_dummy.v`);
die "Checksum failed for file itag_dummy.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### iu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/rtl/iu.v > iu.v") or die "Couldn't fork while building iu.v: $!\n";
print WRITEME <<EOF;
965c
hold_logic_XXX hold_logic(
.
895c
trap_XXX	trap (
.
824c
   pipe_XXX pipe(
.
762c
  ucode_XXX ucode (
.
684c
   rcu_XXX rcu(
.
599c
   ifu_XXX ifu(
.
455c
   ex_XXX ex(
.
22c
module iu_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building iu.v: $!\n";
$expected_cksum = "228323218\\s+32692\\s+iu.v";
chop($new_cksum = `cksum iu.v`);
die "Checksum failed for file iu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### length_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/length_dec.v > length_dec.v") or die "Couldn't fork while building length_dec.v: $!\n";
print WRITEME <<EOF;
210c
module sp_mux8_8_XXX
.
145c
module sp_mux4_8_XXX 
.
128c
sp_mux4_8_XXX               mux_shift_d (.out(iu_shift_d_int),
.
116c
sp_mux8_8_XXX		mux_len3(.out(accum_len3),
.
105c
sp_mux8_8_XXX		mux_len2(.out(accum_len2),
.
98c
sp_mux4_8_XXX		mux_len1(.out(accum_len1),
.
95c
index6_add_XXX	index6_add( .operand(fetch_len6),
.
92c
index5_add_XXX	index5_add( .operand(fetch_len5),
.
89c
index4_add_XXX	index4_add( .operand(fetch_len4),
.
86c
index3_add_XXX	index3_add( .operand(fetch_len3),
.
83c
index2_add_XXX	index2_add( .operand(fetch_len2),
.
80c
index1_add_XXX	index1_add( .operand(fetch_len1),
.
22c
module length_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building length_dec.v: $!\n";
$expected_cksum = "1093584854\\s+7766\\s+length_dec.v";
chop($new_cksum = `cksum length_dec.v`);
die "Checksum failed for file length_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### lib_imdr.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ex/rtl/imdr/lib_imdr.v > lib_imdr.v") or die "Couldn't fork while building lib_imdr.v: $!\n";
print WRITEME <<EOF;
827c
module an2_33_XXX (inp1, inp0, out);
.
814c
module an2_32_XXX (inp1, inp0, out);
.
803c
module inv1_32_XXX (inp, out_);
.
751c
module dpath_ctrl_XXX (
.
703c
module sign_bit_XXX (ra_31, rb_31,
.
667c
  zero_b_32_XXX zero_b_32_0 (
.
650c
  zero_a_32_XXX zero_a_32_0 (
.
616c
module zero_det_XXX (mag_a, mag_b, nxt_rbb,
.
600c
module zero_b_32_XXX (inp, mag_a31, zero_31_2, zero32, d_ovf);
.
588c
module zero_a_32_XXX (inp, zero_31_2, zero32);
.
560c
  booth_XXX booth_b ( 
.
549c
  booth_XXX booth_a (
.
525c
module b_recoder_XXX (mag_a, mag_b, nxt_rbb10, cur_rbb1,
.
510c
    case ({inp,inp_pre})
.
498c
module booth_XXX (inp, inp_pre, b0, b1, b2, neg);
.
477c
 an2_32_XXX an2_32_a (
.
436c
module mx4_clr_reg_nxt_32_XXX (inp3, inp2, inp1, inp0,
.
415c
 an2_32_XXX an2_32_a (
.
375c
module mx4_clr_reg_32_XXX (inp3, inp2, inp1, inp0,
.
354c
 an2_33_XXX an2_33_a (
.
314c
module mx4_clr_reg_33_XXX (inp3, inp2, inp1, inp0,
.
280c
module mx2_neg_33_XXX (inp1, inp0,
.
238c
module mx2_compl_32_XXX (inp1, inp0, sel, compl, out_);
.
210c
module compl_32_XXX (inp, compl, out_);
.
24c
module rsh16_33_XXX (hi, lo,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building lib_imdr.v: $!\n";
$expected_cksum = "1990982496\\s+24530\\s+lib_imdr.v";
chop($new_cksum = `cksum lib_imdr.v`);
die "Checksum failed for file lib_imdr.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### main_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/main_dec.v > main_dec.v") or die "Couldn't fork while building main_dec.v: $!\n";
print WRITEME <<EOF;
177c
rsd_dec_XXX	rsd_dec_byte6(.opcode(ibuff_6),
.
173c
rsd_dec_XXX	rsd_dec_byte5(.opcode(ibuff_5),
.
169c
rsd_dec_XXX	rsd_dec_byte4(.opcode(ibuff_4),
.
165c
rsd_dec_XXX	rsd_dec_byte3(.opcode(ibuff_3),
.
161c
rsd_dec_XXX	rsd_dec_byte2(.opcode(ibuff_2),
.
157c
rsd_dec_XXX	rsd_dec_byte1(.opcode(ibuff_1),
.
153c
rsd_dec_XXX	rsd_dec_byte0(.opcode(ibuff_0),
.
125c
rs2_dec_XXX	rs2_dec_len3(.opcode({ibuff_3,ibuff_4}),
.
119c
rs2_dec_XXX	rs2_dec_len2(.opcode({ibuff_2,ibuff_3}),
.
113c
rs2_dec_XXX	rs2_dec_len1(.opcode({ibuff_1,ibuff_2}),
.
100c
rs1_dec_XXX	rs1_dec(.opcode({ibuff_0,ibuff_1}),
.
22c
module main_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building main_dec.v: $!\n";
$expected_cksum = "1039794743\\s+5846\\s+main_dec.v";
chop($new_cksum = `cksum main_dec.v`);
die "Checksum failed for file main_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### mantissa.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/mantissa.v > mantissa.v") or die "Couldn't fork while building mantissa.v: $!\n";
print WRITEME <<EOF;
100c
mantissa_dp_XXX   i_mantissa_dp (.rsout(rsout),
.
57c
mantissa_cntl_XXX i_mantissa_cntl (.a0func(a0func),
.
25c
module mantissa_XXX(a0func,a1func,a2func,rsout,lsout,a0inc,a1inc,ae_small,eadd,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building mantissa.v: $!\n";
$expected_cksum = "2290354930\\s+4367\\s+mantissa.v";
chop($new_cksum = `cksum mantissa.v`);
die "Checksum failed for file mantissa.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### mantissa_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/mantissa_cntl.v > mantissa_cntl.v") or die "Couldn't fork while building mantissa_cntl.v: $!\n";
print WRITEME <<EOF;
60c
    mantissa_dec_XXX mandec(.b0sel_a(b0sel_a),
.
23c
module mantissa_cntl_XXX(a0func,a1func,a2func,ae_small,eadd,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building mantissa_cntl.v: $!\n";
$expected_cksum = "2093280336\\s+3485\\s+mantissa_cntl.v";
chop($new_cksum = `cksum mantissa_cntl.v`);
die "Checksum failed for file mantissa_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### mantissa_cntl_sub.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/mantissa_cntl_sub.v > mantissa_cntl_sub.v") or die "Couldn't fork while building mantissa_cntl_sub.v: $!\n";
print WRITEME <<EOF;
175c
      casex(a1func)
.
120c
      casex(a0func)
.
105c
	  case(1'b1)         // synopsys parallel_case
.
95c
        case(a2func)
.
24c
module mantissa_dec_XXX(b0sel_a,b0sel_b,a_small,a1sel,a0sel,a0psel,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building mantissa_cntl_sub.v: $!\n";
$expected_cksum = "3030403757\\s+6726\\s+mantissa_cntl_sub.v";
chop($new_cksum = `cksum mantissa_cntl_sub.v`);
die "Checksum failed for file mantissa_cntl_sub.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### mantissa_dp.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/mantissa_dp.v > mantissa_dp.v") or die "Couldn't fork while building mantissa_dp.v: $!\n";
print WRITEME <<EOF;
222c
      casex(nx_rsfunc_rom1)
.
209c
      casex(nx_rsfunc_rom0)
.
24c
module mantissa_dp_XXX(rsout,lsout,a0inc,a1inc,a1,a0,b1,b0,fpout,asign,clk,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building mantissa_dp.v: $!\n";
$expected_cksum = "1480701103\\s+7697\\s+mantissa_dp.v";
chop($new_cksum = `cksum mantissa_dp.v`);
die "Checksum failed for file mantissa_dp.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### miss_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcu/rtl/miss_cntl.v > miss_cntl.v") or die "Couldn't fork while building miss_cntl.v: $!\n";
print WRITEME <<EOF;
256c
case    (cur_state)
.
179c
case    (cur_state)
.
23c
module miss_cntl_XXX( 	
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building miss_cntl.v: $!\n";
$expected_cksum = "2625901006\\s+8583\\s+miss_cntl.v";
chop($new_cksum = `cksum miss_cntl.v`);
die "Checksum failed for file miss_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### mult_array.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/mult_array.v > mult_array.v") or die "Couldn't fork while building mult_array.v: $!\n";
print WRITEME <<EOF;
894c
module addnegi_XXX (ai, bi, so, co);
.
859c
module tree23_XXX (ai, bi, ci, so, co);
.
823c
module tree27_XXX (ai, bi, ci, so, co);
.
785c
module tree29_XXX (ai, bi, ci, so, co);
.
742c
module tree34_XXX (ai, bi, ci, so, co);
.
730c
module multadd2_XXX (ai, bi, so, co, ci);
.
698c
 multadd2_XXX triangle3 (   .ai({row5s_bit7,row5s_bit6}),
.
689c
 multadd2_XXX triangle2 (   .ai({row3s_bit5,row3s_bit4}), 
.
680c
 multadd2_XXX triangle1 (   .ai({row0s_bit3,row0s_bit2}), 
.
671c
 multadd2_XXX triangle0 (	.ai({cin0,negseli}),
.
607c
module propagate_end_XXX (signbit, sin0, sin1, cin0, row0s_bit3, row0s_bit2, row0c_bit3,
.
595c
module fpu_nand_XXX (ina, inb, outz);
.
581c
      case(bits)
.
566c
module fpu_booth_XXX(mselx,negsel,signbit,bits);
.
477c
module mpmux_XXX (mcant, mcan, mcanmi, negsel, mselx, mp);
.
470c
   mpmux_XXX      mpselect6 (.mcant(mcant), .mcan(mcan), .mcanmi(mcanmi), 
.
468c
   mpmux_XXX      mpselect5 (.mcant(mcant), .mcan(mcan), .mcanmi(mcanmi), 
.
466c
   mpmux_XXX      mpselect4 (.mcant(mcant), .mcan(mcan), .mcanmi(mcanmi), 
.
464c
   mpmux_XXX      mpselect3 (.mcant(mcant), .mcan(mcan), .mcanmi(mcanmi), 
.
462c
   mpmux_XXX      mpselect2 (.mcant(mcant), .mcan(mcan), .mcanmi(mcanmi), 
.
460c
   mpmux_XXX      mpselect1 (.mcant(mcant), .mcan(mcan), .mcanmi(mcanmi), 
.
458c
   mpmux_XXX      mpselect0 (.mcant(mcant), .mcan(mcan), .mcanmi(mcanmi), 
.
455c
   fpu_booth_XXX  booth6 (.mselx(mselx6),.negsel(negsel6),
.
453c
   fpu_booth_XXX  booth5 (.mselx(mselx5),.negsel(negsel5),
.
451c
   fpu_booth_XXX  booth4 (.mselx(mselx4),.negsel(negsel4),
.
449c
   fpu_booth_XXX  booth3 (.mselx(mselx3),.negsel(negsel3),
.
447c
   fpu_booth_XXX  booth2 (.mselx(mselx2),.negsel(negsel2),
.
445c
   fpu_booth_XXX  booth1 (.mselx(mselx1),.negsel(negsel1),
.
443c
   fpu_booth_XXX  booth0 (.mselx(mselx0),.negsel(negsel0),
.
425c
module mpselect_XXX(mp6, mp5, mp4, mp3, mp2, mp1, mp0, multiplier, mcant, mcan, 
.
375c
module guesscout_XXX (row1c_bit14, row2s_bit14, row3s_bit14, row3c_bit14,
.
288c
module highlow_XXX(eci, s27, c27, s28, hi, s0, c0, s1, outs27, outc27, outs28, extra6c, extrahiloc26);
.
249c
module signgen_XXX (localnegi, leadbit, negi, signbit, stopin, negselo, nego, stopout);
.
231c
propagate_end_XXX propend(	.signbit(signbit), .sin0(sinma[0]), .sin1(sinma[1]), 
.
178c
guesscout_XXX guesscout0 (	.row1c_bit14(row1c_bit[14]), 
.
167c
 tree34_XXX  treerow6 (  .ai({localnegi[6], row4s_bit[40], row5s_bit[39:8]}),
.
154c
 tree34_XXX  treerow5 (  .ai({extrahiloc26[6], hiloc27[5], hilos27[5], hiloc27[4], 
.
141c
 tree29_XXX  treerow4 (  .ai({hiloc27[6], hilos27[6], hilos28[5], mp5[25], hilos28[4], 
.
131c
 tree29_XXX  treerow3 (  .ai({hiloc27[2], hilos27[2], hiloc27[1], hilos27[1], row0s_bit[28:4]}),
.
119c
 tree23_XXX  treerow2 (  .ai(mp4[26:4]),
.
109c
 tree23_XXX  treerow1 (  .ai(mp1[26:4]),
.
98c
 tree27_XXX  treerow0 ( .ai({hilos28[0],hilos27[0],sinma[26:2]}),
.
89c
 addnegi_XXX  addnegi1 ( .ai(localnegi[5:0]),
.
69c
 highlow_XXX  highlowsel  (	.s27(s27forsign),
.
60c
 mpselect_XXX  mpselection  ( .mp6(mp6), .mp5(mp5), .mp4(mp4), .mp3(mp3), .mp2(mp2), 
.
48c
 signgen_XXX  signgeneration (.localnegi(localnegi), 
.
25c
module mult_array_XXX(eci, eco, multiplier,mcan,sti,aci,cin,sinma,negi,sout,cout,nego,aco,sto,stopout,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building mult_array.v: $!\n";
$expected_cksum = "3659951550\\s+34672\\s+mult_array.v";
chop($new_cksum = `cksum mult_array.v`);
die "Checksum failed for file mult_array.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### multmod.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/multmod.v > multmod.v") or die "Couldn't fork while building multmod.v: $!\n";
print WRITEME <<EOF;
59c
multmod_cntl_XXX p_multmod_cntl ( 	.nx_multfunc_rom0(nx_multfunc_rom0),
.
43c
multmod_dp_XXX p_multmod_dp (	.mb1(mb1), 
.
26c
module multmod_XXX ( multout, nx_multfunc_rom0, nx_multfunc_rom1, romsel, nx_cyc0_rdy, movf, ma1, ma0, mb1, mb0, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building multmod.v: $!\n";
$expected_cksum = "721441267\\s+2173\\s+multmod.v";
chop($new_cksum = `cksum multmod.v`);
die "Checksum failed for file multmod.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### multmod_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/multmod_cntl.v > multmod_cntl.v") or die "Couldn't fork while building multmod_cntl.v: $!\n";
print WRITEME <<EOF;
147c
     case(multfunc)
.
132c
     case(multfunc)
.
68c
module mult_dec_XXX(multfunc, cyc0_rdy, nx_multdec_muxcntl);
.
47c
   mult_dec_XXX muldec_0(.multfunc(4'b0),
.
43c
   mult_dec_XXX muldec_rom1(.multfunc(nx_multfunc_rom1),
.
39c
   mult_dec_XXX muldec_rom0(.multfunc(nx_multfunc_rom0),
.
24c
module multmod_cntl_XXX ( nx_multfunc_rom0, nx_multfunc_rom1,  
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building multmod_cntl.v: $!\n";
$expected_cksum = "1371562302\\s+5741\\s+multmod_cntl.v";
chop($new_cksum = `cksum multmod_cntl.v`);
die "Checksum failed for file multmod_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### multmod_dp.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/multmod_dp.v > multmod_dp.v") or die "Couldn't fork while building multmod_dp.v: $!\n";
print WRITEME <<EOF;
475c
module mult_addinc_XXX(fadd,iovf,in0,in1,cin);
.
401c
module spdec_XXX(spmd,lin,laovf,alow,sti,mout_sel,mout_dr,iovf,movf);
.
385c
  spdec_XXX spdecode(	.spmd(spmd),
.
358c
  mult_addinc_XXX addinc_0 (.fadd(fadd),
.
266c
module mult_add_XXX(eci, dpmul,hi_add,cinlo,cinhi,sinlo,sinhi,sti,multout,movf,
.
221c
   mult_add_XXX  madd(	.dpmul(dpmul),
.
193c
   mult_array_XXX marray(	.multiplier(multiplier),
.
25c
module multmod_dp_XXX ( mb1, mb0, ma1, ma0, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building multmod_dp.v: $!\n";
$expected_cksum = "772065422\\s+14148\\s+multmod_dp.v";
chop($new_cksum = `cksum multmod_dp.v`);
die "Checksum failed for file multmod_dp.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### nxsign.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/nxsign.v > nxsign.v") or die "Couldn't fork while building nxsign.v: $!\n";
print WRITEME <<EOF;
24c
module nxsign_XXX(asignfunc,ae_small,expsame,altb,morethree_taken,eadd,absign,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building nxsign.v: $!\n";
$expected_cksum = "3477589025\\s+3225\\s+nxsign.v";
chop($new_cksum = `cksum nxsign.v`);
die "Checksum failed for file nxsign.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### pcsu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/pcsu/rtl/pcsu.v > pcsu.v") or die "Couldn't fork while building pcsu.v: $!\n";
print WRITEME <<EOF;
113c
assign  pj_clk_out     = clk_gate;
.
69a
input	clk_gate		;// 
.
52a
	clk_gate,
.
40c
module pcsu_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building pcsu.v: $!\n";
$expected_cksum = "2296976504\\s+6958\\s+pcsu.v";
chop($new_cksum = `cksum pcsu.v`);
die "Checksum failed for file pcsu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### pipe.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/pipe/rtl/pipe.v > pipe.v") or die "Couldn't fork while building pipe.v: $!\n";
print WRITEME <<EOF;
205c
pipe_cntl_XXX	pipe_cntl(
.
180c
pipe_dpath_XXX	pipe_dpath(
.
22c
module	pipe_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building pipe.v: $!\n";
$expected_cksum = "2370842837\\s+8669\\s+pipe.v";
chop($new_cksum = `cksum pipe.v`);
die "Checksum failed for file pipe.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### pipe_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/pipe/rtl/pipe_cntl.v > pipe_cntl.v") or die "Couldn't fork while building pipe_cntl.v: $!\n";
print WRITEME <<EOF;
652c
case (cur_state)
.
456c
case    (cur_state)
.
325c
case	(cur_state)
.
24c
module	pipe_cntl_XXX(
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building pipe_cntl.v: $!\n";
$expected_cksum = "605547070\\s+22060\\s+pipe_cntl.v";
chop($new_cksum = `cksum pipe_cntl.v`);
die "Checksum failed for file pipe_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### pipe_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/pipe/rtl/pipe_dpath.v > pipe_dpath.v") or die "Couldn't fork while building pipe_dpath.v: $!\n";
print WRITEME <<EOF;
22c
module	pipe_dpath_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building pipe_dpath.v: $!\n";
$expected_cksum = "3684525076\\s+5673\\s+pipe_dpath.v";
chop($new_cksum = `cksum pipe_dpath.v`);
die "Checksum failed for file pipe_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### prils.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/prils.v > prils.v") or die "Couldn't fork while building prils.v: $!\n";
print WRITEME <<EOF;
64c
prils_dp_XXX    i_prils_dp ( .lsout(lsout),
.
44c
prils_cntl_XXX  i_prils_cntl(.lsdprec(lsdprec),
.
22c
module prils_XXX(a1,a0,prifunc,mconfunc,lsround,incinfunc,stin,lsout,saout,priout,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building prils.v: $!\n";
$expected_cksum = "3766144904\\s+2619\\s+prils.v";
chop($new_cksum = `cksum prils.v`);
die "Checksum failed for file prils.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### prils_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/prils_cntl.v > prils_cntl.v") or die "Couldn't fork while building prils_cntl.v: $!\n";
print WRITEME <<EOF;
92c
    casex(nx_prifunc_rom1)
.
80c
    casex(nx_prifunc_rom0)
.
59c
module pri_dec_XXX(m0,m1,m2,m3,m4,prifunc,nx_prifunc_rom0,nx_prifunc_rom1,
.
36c
pri_dec_XXX prid(	.m0(m0c),
.
25c
module prils_cntl_XXX (lsdprec,m1c,m3c,m0c,m4,m2c,prifunc,incinfunc,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building prils_cntl.v: $!\n";
$expected_cksum = "1022796667\\s+3430\\s+prils_cntl.v";
chop($new_cksum = `cksum prils_cntl.v`);
die "Checksum failed for file prils_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### prils_dp.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/prils_dp.v > prils_dp.v") or die "Couldn't fork while building prils_dp.v: $!\n";
print WRITEME <<EOF;
107c
module prils_round_dec_XXX(roundout,in,prec,gin,stin);
.
92c
prils_round_dec_XXX ls2(	.roundout(lsround),
.
25c
module prils_dp_XXX (lsout,lsround,priout,a1,a0,multout,stin,m0c,m4,
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building prils_dp.v: $!\n";
$expected_cksum = "3584502158\\s+3270\\s+prils_dp.v";
chop($new_cksum = `cksum prils_dp.v`);
die "Checksum failed for file prils_dp.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rcu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/rcu/rtl/rcu.v > rcu.v") or die "Couldn't fork while building rcu.v: $!\n";
print WRITEME <<EOF;
306c
rcu_ctl_XXX		rcu_ctl (.opcode_1_rs1_r(opcode_1_rs1_r),
.
235c
rcu_dpath_XXX	rcu_dpath (.iu_sc_bottom(iu_sc_bottom),
.
22c
module rcu_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rcu.v: $!\n";
$expected_cksum = "1883190649\\s+15925\\s+rcu.v";
chop($new_cksum = `cksum rcu.v`);
die "Checksum failed for file rcu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rcu_ctl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/rcu/rtl/rcu_ctl.v > rcu_ctl.v") or die "Couldn't fork while building rcu_ctl.v: $!\n";
print WRITEME <<EOF;
2143,2161d
2127c
module	cmp_we_4_XXX (
.
1741c
module optop_decoder_XXX (
.
1307c
module dest_decoder_XXX (
.
1229c
module	decode_opcode_XXX (
.
895c
cmp_we_4_XXX	comp_bypass_reg_rs2_w(.out(bypass_gl_reg_rs2_w),
.
890c
cmp_we_4_XXX	comp_bypass_reg_rs2_c(.out(bypass_gl_reg_rs2_c),
.
885c
cmp_we_4_XXX	comp_bypass_reg_rs2_e(.out(bypass_gl_reg_rs2_e),
.
852c
cmp_we_4_XXX	comp_bypass_reg_rs1_w(.out(bypass_gl_reg_rs1_w),
.
847c
cmp_we_4_XXX	comp_bypass_reg_rs1_c(.out(bypass_gl_reg_rs1_c),
.
842c
cmp_we_4_XXX	comp_bypass_reg_rs1_e(.out(bypass_gl_reg_rs1_e),
.
677c
optop_decoder_XXX	optop_dec(.opcode({opcode_1_op_r,opcode_2_op_r}),
.
638c
dest_decoder_XXX    dest_dec(.opcode({opcode_1_op_r,opcode_2_op_r}),
.
550c
decode_opcode_XXX   decode_opcode_rs2(.opcode({opcode_1_rs2_r,opcode_2_rs2_r}),
.
405c
decode_opcode_XXX	decode_opcode_rs1(.opcode({opcode_1_rs1_r,opcode_2_rs1_r}),
.
22c
module rcu_ctl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rcu_ctl.v: $!\n";
$expected_cksum = "1103303368\\s+83339\\s+rcu_ctl.v";
chop($new_cksum = `cksum rcu_ctl.v`);
die "Checksum failed for file rcu_ctl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rcu_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/rcu/rtl/rcu_dpath.v > rcu_dpath.v") or die "Couldn't fork while building rcu_dpath.v: $!\n";
print WRITEME <<EOF;
843c
module  cmp_we_32_XXX (
.
838,839d
834,836c
assign #1 do_a[31:0]= ram[add_a[5:0]];
assign #1 do_b[31:0]= ram[add_b[5:0]];
assign #1 do_c[31:0]= ram[add_c[5:0]];
.
829,831d
826,827c
always @ (posedge clk) begin
     if (we_d) ram[add_d[5:0]] <= di_d[31:0];
     if (we_e) ram[add_e[5:0]] <= di_e[31:0];
.
824a
reg [31:0] ram [63:0];

.
822,823c
// make a synthesizable register file
.
808a
input		clk;
.
794a
	clk,
.
793c
module rf_XXX (
.
585,586c
		.we_d(iu_data_we_w & !scache_wr_miss_w),
		.we_e(smu_we) );
.
575c
rf_XXX	scache(.clk(clk),
		.do_a(scache_dout_rs1),
.
504c
cmp_we_32_XXX       comp_bypass_scache_rs2_w(.out(bypass_scache_rs2_w),
.
499c
cmp_we_32_XXX       comp_bypass_scache_rs2_c(.out(bypass_scache_rs2_c),
.
494c
cmp_we_32_XXX       comp_bypass_scache_rs2_e(.out(bypass_scache_rs2_e),
.
378c
cmp_we_32_XXX       comp_bypass_scache_rs1_w(.out(bypass_scache_rs1_w),
.
373c
cmp_we_32_XXX       comp_bypass_scache_rs1_c(.out(bypass_scache_rs1_c),
.
368c
cmp_we_32_XXX       comp_bypass_scache_rs1_e(.out(bypass_scache_rs1_e),
.
22c
module rcu_dpath_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rcu_dpath.v: $!\n";
$expected_cksum = "1071833040\\s+28395\\s+rcu_dpath.v";
chop($new_cksum = `cksum rcu_dpath.v`);
die "Checksum failed for file rcu_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rs1_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/rs1_dec.v > rs1_dec.v") or die "Couldn't fork while building rs1_dec.v: $!\n";
print WRITEME <<EOF;
21c
module rs1_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rs1_dec.v: $!\n";
$expected_cksum = "643995139\\s+16937\\s+rs1_dec.v";
chop($new_cksum = `cksum rs1_dec.v`);
die "Checksum failed for file rs1_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rs2_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/rs2_dec.v > rs2_dec.v") or die "Couldn't fork while building rs2_dec.v: $!\n";
print WRITEME <<EOF;
22c
module rs2_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rs2_dec.v: $!\n";
$expected_cksum = "4036810138\\s+5762\\s+rs2_dec.v";
chop($new_cksum = `cksum rs2_dec.v`);
die "Checksum failed for file rs2_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rsadd.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/rsadd.v > rsadd.v") or die "Couldn't fork while building rsadd.v: $!\n";
print WRITEME <<EOF;
95c
 rsadd_cntl_XXX p_rsadd_cntl ( 	
.
76c
 rsadd_dp_XXX p_rsadd_dp ( 		.a0zero(a0zero),
.
25c
module rsadd_XXX (	saout, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rsadd.v: $!\n";
$expected_cksum = "2807527414\\s+3246\\s+rsadd.v";
chop($new_cksum = `cksum rsadd.v`);
die "Checksum failed for file rsadd.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rsadd_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/rsadd_cntl.v > rsadd_cntl.v") or die "Couldn't fork while building rsadd_cntl.v: $!\n";
print WRITEME <<EOF;
269c
module round_dec_XXX(roundout,in,prec,gin,stin);
.
243c
      case(rsfunc)
.
229c
      casex(rsfunc)
.
202c
      casex(nx_rsfunc_rom1)
.
189c
      casex(nx_rsfunc_rom0)
.
149c
module rsadd_dec_XXX(	
.
137c
    casex(incinfunc)
.
121c
module incin_dec_XXX(	nxincin,
.
96c
  incin_dec_XXX id0 ( 	.nxincin(nxincin), 
.
89c
  round_dec_XXX rs2 ( 	.roundout(rsround),
.
74c
  rsadd_dec_XXX rsadec ( 	
.
25c
module rsadd_cntl_XXX (	
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rsadd_cntl.v: $!\n";
$expected_cksum = "4219851373\\s+6481\\s+rsadd_cntl.v";
chop($new_cksum = `cksum rsadd_cntl.v`);
die "Checksum failed for file rsadd_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rsadd_dp.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/rsadd_dp.v > rsadd_dp.v") or die "Couldn't fork while building rsadd_dp.v: $!\n";
print WRITEME <<EOF;
24c
module rsadd_dp_XXX ( 	a0zero, 
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rsadd_dp.v: $!\n";
$expected_cksum = "2770872167\\s+2435\\s+rsadd_dp.v";
chop($new_cksum = `cksum rsadd_dp.v`);
die "Checksum failed for file rsadd_dp.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### rsd_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/rsd_dec.v > rsd_dec.v") or die "Couldn't fork while building rsd_dec.v: $!\n";
print WRITEME <<EOF;
22c
module rsd_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building rsd_dec.v: $!\n";
$expected_cksum = "3205116775\\s+3316\\s+rsd_dec.v";
chop($new_cksum = `cksum rsd_dec.v`);
die "Checksum failed for file rsd_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### smu.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/smu/rtl/smu.v > smu.v") or die "Couldn't fork while building smu.v: $!\n";
print WRITEME <<EOF;
170c
smu_dpath_XXX smu_dpath (
.
125c
smu_ctl_XXX smu_ctl	(
.
24c
module	smu_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building smu.v: $!\n";
$expected_cksum = "311320256\\s+5604\\s+smu.v";
chop($new_cksum = `cksum smu.v`);
die "Checksum failed for file smu.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### smu_ctl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/smu/rtl/smu_ctl.v > smu_ctl.v") or die "Couldn't fork while building smu_ctl.v: $!\n";
print WRITEME <<EOF;
957c
module less_comp3_XXX (
.
949c
less_comp3_XXX	comparator(.less(less),
.
933c
module comp3_30_XXX (
.
910c
module	comp30_6_XXX(
.
884c
module	comp6_30_XXX(
.
301c
comp6_30_XXX	ovr_fl_cmp(.result(ovr_flw_bit),
.
271c
comp30_6_XXX	fill_comp(.result(fill_raw),
.
184c
comp6_30_XXX	spill_comp(.result(spill_raw),
.
177c
comp3_30_XXX	six_entr_comp(.result(less_than_6_raw),
.
24c
module smu_ctl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building smu_ctl.v: $!\n";
$expected_cksum = "89875546\\s+23812\\s+smu_ctl.v";
chop($new_cksum = `cksum smu_ctl.v`);
die "Checksum failed for file smu_ctl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### smu_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/smu/rtl/smu_dpath.v > smu_dpath.v") or die "Couldn't fork while building smu_dpath.v: $!\n";
print WRITEME <<EOF;
277c
module inc_dec_30_XXX (
.
246c
module	sub2_32_XXX(
.
190c
inc_dec_30_XXX	inc_dec(.result(sbase_c_inc_dec_out),
.
180c
sub2_32_XXX	sub (.result(num_entries_out),
.
26c
module smu_dpath_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building smu_dpath.v: $!\n";
$expected_cksum = "1038796308\\s+7412\\s+smu_dpath.v";
chop($new_cksum = `cksum smu_dpath.v`);
die "Checksum failed for file smu_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### trap.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/pipe/rtl/trap.v > trap.v") or die "Couldn't fork while building trap.v: $!\n";
print WRITEME <<EOF;
22c
module	trap_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building trap.v: $!\n";
$expected_cksum = "2398131127\\s+19851\\s+trap.v";
chop($new_cksum = `cksum trap.v`);
die "Checksum failed for file trap.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode.v > ucode.v") or die "Couldn't fork while building ucode.v: $!\n";
print WRITEME <<EOF;
239c
  ucode_dpath_XXX ucode_dpath_0 (
.
192c
  ucode_ctrl_XXX ucode_ctrl_0 (
.
189,190c
  inv_b_1_XXX  inv_b_1_0  ( .inp(rs1_0_l),     .out_l(rs1_0)       );
  inv_b_1_XXX  inv_b_1_1  ( .inp(rs2_0_l),     .out_l(rs2_0)       );
.
187c
  inv_e_1_XXX  inv_e_1_0  ( .inp(u_done),      .out_l(udone_l)     );
.
184,185c
  inv_a_32_XXX inv_a_32_0 ( .inp(rs1[31:0]),   .out_l(rs1_l[31:0]) );
  inv_c_32_XXX inv_c_32_0 ( .inp(rs1_l[31:0]), .out_l(rs1_b[31:0]) );
.
22c
module ucode_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode.v: $!\n";
$expected_cksum = "3866841997\\s+13576\\s+ucode.v";
chop($new_cksum = `cksum ucode.v`);
die "Checksum failed for file ucode.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_ctrl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_ctrl.v > ucode_ctrl.v") or die "Couldn't fork while building ucode_ctrl.v: $!\n";
print WRITEME <<EOF;
166c
  ucode_seq_XXX ucode_seq_0 (
.
143c
  ucode_add_XXX ucode_add_0 (
.
126c
  ucode_ind_XXX ucode_ind_0 (
.
22c
module ucode_ctrl_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_ctrl.v: $!\n";
$expected_cksum = "271240018\\s+9588\\s+ucode_ctrl.v";
chop($new_cksum = `cksum ucode_ctrl.v`);
die "Checksum failed for file ucode_ctrl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_dat.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_dat.v > ucode_dat.v") or die "Couldn't fork while building ucode_dat.v: $!\n";
print WRITEME <<EOF;
658c
    case(u_f16)
.
553,559c
  del1_32_XXX del1_32_areg0 ( .inp(areg0[31:0]), .out(d_areg0[31:0]) );
  del1_32_XXX del1_32_reg0  ( .inp(reg0[31:0]),  .out(d_reg0[31:0])  );
  del1_32_XXX del1_32_reg1  ( .inp(reg1[31:0]),  .out(d_reg1[31:0])  );
  del1_32_XXX del1_32_reg2  ( .inp(reg2[31:0]),  .out(d_reg2[31:0])  );
  del1_32_XXX del1_32_reg3  ( .inp(reg3[31:0]),  .out(d_reg3[31:0])  );
  del1_32_XXX del1_32_reg5  ( .inp(reg5[31:0]),  .out(d_reg5[31:0])  );
  del1_32_XXX del1_32_reg6  ( .inp(reg6[31:0]),  .out(d_reg6[31:0])  );
.
526c
    case(u_f09)
.
494c
    case(u_f08)
.
472c
    case(u_f13)
.
449c
    case(u_f12)
.
423c
    case(u_f10)
.
415,417c
  buf_cf_32_XXX buf_cf_32_u_ptb ( .inp(b_oprd[31:0]), .out(ucode_portb[31:0]) );
  buf_cf_32_XXX buf_cf_32_u_ptc ( .inp(r236[31:0]),   .out(ucode_portc[31:0]) );
  buf_cf_32_XXX buf_cf_32_u_ar0 ( .inp(areg0[31:0]),  .out(u_areg0[31:0])     );
.
407c
  buf_a_oprd_XXX buf_a_oprd_0 (
.
373c
    case(u_f07)
.
358c
    case(u_f06)
.
320c
    case(u_f06)
.
301c
    case(u_f20)
.
261c
    case(u_f20)
.
226c
    case(u_f19)
.
98c
`include "ucode.h"
.
51c
module ucode_dat_XXX (
.
42,46c
  inv_f_32_XXX inv_f_32_0 ( .inp(a_oprd_b[31:0]), .out_l(a_oprd_u[31:0]) );
  inv_e_32_XXX inv_e_32_1 ( .inp(a_oprd_b[31:0]), .out_l(a_oprd[31:0]) );
  inv_c_32_XXX inv_c_32_1 ( .inp(a_oprd[31:0]),   .out_l(u_porta_l[31:0]) );
  inv_f_32_XXX inv_f_32_2 ( .inp(u_porta_l[31:0]),.out_l(ucode_porta[31:0]) );
  inv_d_1_XXX  inv_d_1_0  ( .inp(a_oprd_i[0]   ), .out_l(a_oprd_0_l)  );
.
40c
  inv_c_32_XXX inv_c_32_0 ( .inp(a_oprd_i[31:0]), .out_l(a_oprd_b[31:0]) );
.
24c
module buf_a_oprd_XXX (a_oprd_i, a_oprd, a_oprd_u, ucode_porta, a_oprd_0_l);
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_dat.v: $!\n";
$expected_cksum = "2263563875\\s+26282\\s+ucode_dat.v";
chop($new_cksum = `cksum ucode_dat.v`);
die "Checksum failed for file ucode_dat.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_dec.v > ucode_dec.v") or die "Couldn't fork while building ucode_dec.v: $!\n";
print WRITEME <<EOF;
247c
  ucode_dec_XXX ucode_dec_0 (
.
236c
  mx3_9_XXX mx3_next_addr ( 
.
229c
    case({bit1,bit0})
.
217c
  branch_bit_XXX branch_bit_0 ( 
.
173c
`include  "ucode.h"
.
152c
module ucode_add_XXX (
.
56c
    casex({valid_op_r,opcode_1_op_r,opcode_2_op_r})
.
35c
`include  "ucode.h"
.
22c
module ucode_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_dec.v: $!\n";
$expected_cksum = "2216783582\\s+10781\\s+ucode_dec.v";
chop($new_cksum = `cksum ucode_dec.v`);
die "Checksum failed for file ucode_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_dpath.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_dpath.v > ucode_dpath.v") or die "Couldn't fork while building ucode_dpath.v: $!\n";
print WRITEME <<EOF;
219c
ucode_reg_XXX ucode_reg_0 (
.
214c
ieu_rom_XXX ieu_rom_0 (
.
167c
ucode_dat_XXX ucode_dat_0 (
.
72a
`include "ucode.h"

.
22c
module ucode_dpath_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_dpath.v: $!\n";
$expected_cksum = "4170418348\\s+10696\\s+ucode_dpath.v";
chop($new_cksum = `cksum ucode_dpath.v`);
die "Checksum failed for file ucode_dpath.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_ind.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_ind.v > ucode_ind.v") or die "Couldn't fork while building ucode_ind.v: $!\n";
print WRITEME <<EOF;
22c
module ucode_ind_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_ind.v: $!\n";
$expected_cksum = "377431830\\s+3131\\s+ucode_ind.v";
chop($new_cksum = `cksum ucode_ind.v`);
die "Checksum failed for file ucode_ind.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_lib.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_lib.v > ucode_lib.v") or die "Couldn't fork while building ucode_lib.v: $!\n";
print WRITEME <<EOF;
212c
module branch_bit_XXX (u_f18_6, u_f18_5, u_f08_rd_rs1_a, rs1_0_l, rs2_0_l,
.
199,207c
mx3_1_XXX U00 (.inp({inp3[0], inp2[0], inp1[0] }),.sel(sel),.out(out[0]));
mx3_1_XXX U01 (.inp({inp3[1], inp2[1], inp1[1] }),.sel(sel),.out(out[1]));
mx3_1_XXX U02 (.inp({inp3[2], inp2[2], inp1[2] }),.sel(sel),.out(out[2]));
mx3_1_XXX U03 (.inp({inp3[3], inp2[3], inp1[3] }),.sel(sel),.out(out[3]));
mx3_1_XXX U04 (.inp({inp3[4], inp2[4], inp1[4] }),.sel(sel),.out(out[4]));
mx3_1_XXX U05 (.inp({inp3[5], inp2[5], inp1[5] }),.sel(sel),.out(out[5]));
mx3_1_XXX U06 (.inp({inp3[6], inp2[6], inp1[6] }),.sel(sel),.out(out[6]));
mx3_1_XXX U07 (.inp({inp3[7], inp2[7], inp1[7] }),.sel(sel),.out(out[7]));
mx3_1_XXX U08 (.inp({inp3[8], inp2[8], inp1[8] }),.sel(sel),.out(out[8]));
.
189c
module mx3_9_XXX (inp1, inp2, inp3, sel, out);
.
169c
module mx3_1_XXX (inp, sel, out);
.
157c
module buf_cf_32_XXX (inp, out);   
.
145c
module inv_f_32_XXX (inp, out_l);
.
133c
module inv_e_32_XXX (inp, out_l);
.
121c
module inv_d_32_XXX (inp, out_l);
.
109c
module inv_c_32_XXX (inp, out_l);
.
97c
module inv_b_32_XXX (inp, out_l);
.
85c
module inv_a_32_XXX (inp, out_l);
.
75c
module inv_e_1_XXX (inp, out_l);
.
65c
module inv_d_1_XXX (inp, out_l);
.
55c
module inv_b_1_XXX (inp, out_l);
.
43c
module del1_32_XXX (inp, out);
.
32c
module del1_16_XXX (inp, out);
.
23c
module del1_1_XXX (inp, out);
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_lib.v: $!\n";
$expected_cksum = "1220947034\\s+6011\\s+ucode_lib.v";
chop($new_cksum = `cksum ucode_lib.v`);
die "Checksum failed for file ucode_lib.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_reg.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_reg.v > ucode_reg.v") or die "Couldn't fork while building ucode_reg.v: $!\n";
print WRITEME <<EOF;
147,149c
  del1_32_XXX del1_32_0 ( .inp(reg_u_fxx[31:0]),  .out(d_reg_u_fxx[31:0])  );
  del1_32_XXX del1_32_1 ( .inp(reg_u_fxx[63:32]), .out(d_reg_u_fxx[63:32]) );
  del1_16_XXX del1_16_2 ( .inp(reg_u_fxx[(`ROM_BITS-1):64]),
.
57a
`include "ucode.h"

.
22c
module ucode_reg_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_reg.v: $!\n";
$expected_cksum = "221364174\\s+9262\\s+ucode_reg.v";
chop($new_cksum = `cksum ucode_reg.v`);
die "Checksum failed for file ucode_reg.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode_seq.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode_seq.v > ucode_seq.v") or die "Couldn't fork while building ucode_seq.v: $!\n";
print WRITEME <<EOF;
175c
    case({bit1,bit0})
.
61a
`include "ucode.h"

.
22c
module ucode_seq_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode_seq.v: $!\n";
$expected_cksum = "1271173344\\s+15487\\s+ucode_seq.v";
chop($new_cksum = `cksum ucode_seq.v`);
die "Checksum failed for file ucode_seq.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### valid_dec.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ifu/rtl/valid_dec.v > valid_dec.v") or die "Couldn't fork while building valid_dec.v: $!\n";
print WRITEME <<EOF;
25c
module valid_dec_XXX (
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building valid_dec.v: $!\n";
$expected_cksum = "1704295153\\s+4815\\s+valid_dec.v";
chop($new_cksum = `cksum valid_dec.v`);
die "Checksum failed for file valid_dec.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### wrbuf_cntl.v

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/dcu/rtl/wrbuf_cntl.v > wrbuf_cntl.v") or die "Couldn't fork while building wrbuf_cntl.v: $!\n";
print WRITEME <<EOF;
196c
case (cur_state)
.
23c
module wrbuf_cntl_XXX( 	
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building wrbuf_cntl.v: $!\n";
$expected_cksum = "2614820118\\s+8870\\s+wrbuf_cntl.v";
chop($new_cksum = `cksum wrbuf_cntl.v`);
die "Checksum failed for file wrbuf_cntl.v\n" unless ($new_cksum =~ /$expected_cksum/);

##### defines.h

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/rtl/defines.h > defines.h") or die "Couldn't fork while building defines.h: $!\n";
print WRITEME <<EOF;
187,188c
`define ITAG_MODULE itag_dummy
`define ICRAM_MODULE icram_dummy
.
175,176c
//`define ITAG_MODULE itag_shell
//`define ICRAM_MODULE icram_shell
.
113,114c
`define DTAG_MODULE dtag_dummy
`define DCRAM_MODULE dcram_dummy
.
101,102c
//`define DTAG_MODULE dtag_shell
//`define DCRAM_MODULE dcram_shell
.
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building defines.h: $!\n";
$expected_cksum = "2820033919\\s+7563\\s+defines.h";
chop($new_cksum = `cksum defines.h`);
die "Checksum failed for file defines.h\n" unless ($new_cksum =~ /$expected_cksum/);

##### fpu.h

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/fpu/rtl/fpu.h > fpu.h") or die "Couldn't fork while building fpu.h: $!\n";
print WRITEME <<EOF;
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building fpu.h: $!\n";
$expected_cksum = "2833804004\\s+1590\\s+fpu.h";
chop($new_cksum = `cksum fpu.h`);
die "Checksum failed for file fpu.h\n" unless ($new_cksum =~ /$expected_cksum/);

##### ucode.h

$pid = open(WRITEME, "| ed -s ${sourcedir}/picoJava-II/design/iu/ucode/rtl/ucode.h > ucode.h") or die "Couldn't fork while building ucode.h: $!\n";
print WRITEME <<EOF;
1,\$p
EOF
close (WRITEME) or die "Couldn't close while building ucode.h: $!\n";
$expected_cksum = "781134570\\s+15631\\s+ucode.h";
chop($new_cksum = `cksum ucode.h`);
die "Checksum failed for file ucode.h\n" unless ($new_cksum =~ /$expected_cksum/);

############################################################################
