/******************************************************************************/
/* */
/* Copyright (c) 1999 Sun Microsystems, Inc. All rights reserved. */
/* */
/* The contents of this file are subject to the current version of the Sun */
/* Community Source License, microSPARCII ("the License"). You may not use */
/* this file except in compliance with the License. You may obtain a copy */
/* of the License by searching for "Sun Community Source License" on the */
/* World Wide Web at http://www.sun.com. See the License for the rights, */
/* obligations, and limitations governing use of the contents of this file. */
/* */
/* Sun Microsystems, Inc. has intellectual property rights relating to the */
/* technology embodied in these files. In particular, and without limitation, */
/* these intellectual property rights may include one or more U.S. patents, */
/* foreign patents, or pending applications. */
/* */
/* Sun, Sun Microsystems, the Sun logo, all Sun-based trademarks and logos, */
/* Solaris, Java and all Java-based trademarks and logos are trademarks or */
/* registered trademarks of Sun Microsystems, Inc. in the United States and */
/* other countries. microSPARC is a trademark or registered trademark of */
/* SPARC International, Inc. All SPARC trademarks are used under license and */
/* are trademarks or registered trademarks of SPARC International, Inc. in */
/* the United States and other countries. Products bearing SPARC trademarks */
/* are based upon an architecture developed by Sun Microsystems, Inc. */
/* */
/******************************************************************************/
/***************************************************************************
****************************************************************************
***
*** Program File: @(#)fp_rom.v
***
****************************************************************************
****************************************************************************/
// **************************************************************
// @(#)fp_rom.v 1.7 1/8/93
//
// High-level verilog model of the fpu 256x64 rom.
// **************************************************************
// simulates a clocked ROM with an internal address register
module fp_rom
( ss_clock, rom_adr, rom_dout,
rom_scan_out, rom_scan_in, ss_scan_mode);
input ss_clock
;
input rom_scan_in
, ss_scan_mode
;
input [7:0] rom_adr
;
output rom_scan_out
;
output [63:0] rom_dout
;
wire [63:0] data
;
wire [7:0] reg_rom_adr
; // registered version of the address
Mflipflop_noop rmad7(reg_rom_adr[7], rom_adr[7], ss_clock);
Mflipflop_noop rmad6(reg_rom_adr[6], rom_adr[6], ss_clock);
Mflipflop_noop rmad5(reg_rom_adr[5], rom_adr[5], ss_clock);
Mflipflop_noop rmad4(reg_rom_adr[4], rom_adr[4], ss_clock);
Mflipflop_noop rmad3(reg_rom_adr[3], rom_adr[3], ss_clock);
Mflipflop_noop rmad2(reg_rom_adr[2], rom_adr[2], ss_clock);
Mflipflop_noop rmad1(reg_rom_adr[1], rom_adr[1], ss_clock);
Mflipflop_noop rmad0(reg_rom_adr[0], rom_adr[0], ss_clock);
RR256X64 ROM_256x64 (
.DO63(rom_dout[63]),
.DO62(rom_dout[62]),
.DO61(rom_dout[61]),
.DO60(rom_dout[60]),
.DO59(rom_dout[59]),
.DO58(rom_dout[58]),
.DO57(rom_dout[57]),
.DO56(rom_dout[56]),
.DO55(rom_dout[55]),
.DO54(rom_dout[54]),
.DO53(rom_dout[53]),
.DO52(rom_dout[52]),
.DO51(rom_dout[51]),
.DO50(rom_dout[50]),
.DO49(rom_dout[49]),
.DO48(rom_dout[48]),
.DO47(rom_dout[47]),
.DO46(rom_dout[46]),
.DO45(rom_dout[45]),
.DO44(rom_dout[44]),
.DO43(rom_dout[43]),
.DO42(rom_dout[42]),
.DO41(rom_dout[41]),
.DO40(rom_dout[40]),
.DO39(rom_dout[39]),
.DO38(rom_dout[38]),
.DO37(rom_dout[37]),
.DO36(rom_dout[36]),
.DO35(rom_dout[35]),
.DO34(rom_dout[34]),
.DO33(rom_dout[33]),
.DO32(rom_dout[32]),
.DO31(rom_dout[31]),
.DO30(rom_dout[30]),
.DO29(rom_dout[29]),
.DO28(rom_dout[28]),
.DO27(rom_dout[27]),
.DO26(rom_dout[26]),
.DO25(rom_dout[25]),
.DO24(rom_dout[24]),
.DO23(rom_dout[23]),
.DO22(rom_dout[22]),
.DO21(rom_dout[21]),
.DO20(rom_dout[20]),
.DO19(rom_dout[19]),
.DO18(rom_dout[18]),
.DO17(rom_dout[17]),
.DO16(rom_dout[16]),
.DO15(rom_dout[15]),
.DO14(rom_dout[14]),
.DO13(rom_dout[13]),
.DO12(rom_dout[12]),
.DO11(rom_dout[11]),
.DO10(rom_dout[10]),
.DO9(rom_dout[9]),
.DO8(rom_dout[8]),
.DO7(rom_dout[7]),
.DO6(rom_dout[6]),
.DO5(rom_dout[5]),
.DO4(rom_dout[4]),
.DO3(rom_dout[3]),
.DO2(rom_dout[2]),
.DO1(rom_dout[1]),
.DO0(rom_dout[0]),
.OE(1'b1),
.ADR7(reg_rom_adr[7]),
.ADR6(reg_rom_adr[6]),
.ADR5(reg_rom_adr[5]),
.ADR4(reg_rom_adr[4]),
.ADR3(reg_rom_adr[3]),
.ADR2(reg_rom_adr[2]),
.ADR1(reg_rom_adr[1]),
.ADR0(reg_rom_adr[0])
);
endmodule
module RR256X64
(
DO63,DO62,DO61,DO60,DO59,DO58,DO57,DO56,
DO55,DO54,DO53,DO52,DO51,DO50,DO49,DO48,
DO47,DO46,DO45,DO44,DO43,DO42,DO41,DO40,
DO39,DO38,DO37,DO36,DO35,DO34,DO33,DO32,
DO31,DO30,DO29,DO28,DO27,DO26,DO25,DO24,
DO23,DO22,DO21,DO20,DO19,DO18,DO17,DO16,
DO15,DO14,DO13,DO12,DO11,DO10,DO9,DO8,
DO7,DO6,DO5,DO4,DO3,DO2,DO1,DO0,
OE,
ADR7,ADR6,ADR5,ADR4,ADR3,ADR2,ADR1,ADR0);
input OE
,
ADR7
,ADR6
,ADR5
,ADR4
,ADR3
,ADR2
,ADR1
,ADR0
;
output DO63
,DO62
,DO61
,DO60
,DO59
,DO58
,DO57
,DO56
,
DO55
,DO54
,DO53
,DO52
,DO51
,DO50
,DO49
,DO48
,
DO47
,DO46
,DO45
,DO44
,DO43
,DO42
,DO41
,DO40
,
DO39
,DO38
,DO37
,DO36
,DO35
,DO34
,DO33
,DO32
,
DO31
,DO30
,DO29
,DO28
,DO27
,DO26
,DO25
,DO24
,
DO23
,DO22
,DO21
,DO20
,DO19
,DO18
,DO17
,DO16
,
DO15
,DO14
,DO13
,DO12
,DO11
,DO10
,DO9
,DO8
,
DO7
,DO6
,DO5
,DO4
,DO3
,DO2
,DO1
,DO0
;
wire [7:0] reg_rom_adr
= {
ADR7,ADR6,ADR5,ADR4,ADR3,ADR2,ADR1,ADR0 };
reg [63:0] data
;
assign {
DO63,DO62,DO61,DO60,DO59,DO58,DO57,DO56,
DO55,DO54,DO53,DO52,DO51,DO50,DO49,DO48,
DO47,DO46,DO45,DO44,DO43,DO42,DO41,DO40,
DO39,DO38,DO37,DO36,DO35,DO34,DO33,DO32,
DO31,DO30,DO29,DO28,DO27,DO26,DO25,DO24,
DO23,DO22,DO21,DO20,DO19,DO18,DO17,DO16,
DO15,DO14,DO13,DO12,DO11,DO10,DO9,DO8,
DO7,DO6,DO5,DO4,DO3,DO2,DO1,DO0 } = data[63:0];
always @(reg_rom_adr) begin
case (reg_rom_adr)
8'd000: data = 64'h0000000000000000 ;
8'd001: data = 64'h00000011100085c4 ;
8'd002: data = 64'h00000041100085a4 ;
8'd003: data = 64'h0000000000000000 ;
8'd004: data = 64'h03103010c804f865 ;
8'd005: data = 64'h0020800113800000 ;
8'd006: data = 64'h00000000000085ac ;
8'd007: data = 64'h121200000000806c ;
8'd008: data = 64'h041440404800f865 ;
8'd009: data = 64'h0020800113800000 ;
8'd010: data = 64'h05145051c800f865 ;
8'd011: data = 64'h0020800113800000 ;
8'd012: data = 64'h000000100000860c ;
8'd013: data = 64'h121200512000807c ;
8'd014: data = 64'h000000100000860c ;
8'd015: data = 64'h12120000000081dc ;
8'd016: data = 64'h00000000000080a4 ;
8'd017: data = 64'h00000000000087dc ;
8'd018: data = 64'h0000004110000000 ;
8'd019: data = 64'h00000001e8001dac ;
8'd020: data = 64'h002080111000d57f ;
8'd021: data = 64'h0020800123800000 ;
8'd022: data = 64'h001430000000c9cd ;
8'd023: data = 64'h0010300188000000 ;
8'd024: data = 64'h0a14507968037040 ;
8'd025: data = 64'h0300001968200000 ;
8'd026: data = 64'h0a145079680371f0 ;
8'd027: data = 64'h0300000168200000 ;
8'd028: data = 64'h0a14507968037040 ;
8'd029: data = 64'h0300001968200000 ;
8'd030: data = 64'h0a145079680371f0 ;
8'd031: data = 64'h0300000168200000 ;
8'd032: data = 64'h0014000048000000 ;
8'd033: data = 64'h0a1430000000c1cc ;
8'd034: data = 64'h0a000000000069cc ;
8'd035: data = 64'h0200000000008254 ;
8'd036: data = 64'h0014010048000000 ;
8'd037: data = 64'h0c1850518000c2f4 ;
8'd038: data = 64'h0c1850000000c83c ;
8'd039: data = 64'h02000018000082fe ;
8'd040: data = 64'h0a14507968037040 ;
8'd041: data = 64'h0300001968200000 ;
8'd042: data = 64'h0a145079680371f0 ;
8'd043: data = 64'h0300000168200000 ;
8'd044: data = 64'h0a14507968037040 ;
8'd045: data = 64'h0300001968200000 ;
8'd046: data = 64'h0a145079680371f0 ;
8'd047: data = 64'h0300000168200000 ;
8'd048: data = 64'h8a1030000000842c ;
8'd049: data = 64'h80103380000080b4 ;
8'd050: data = 64'h801030780000842c ;
8'd051: data = 64'h82103390680080b4 ;
8'd052: data = 64'h801033800000866c ;
8'd053: data = 64'h8a103380000086c4 ;
8'd054: data = 64'h80103380000086c4 ;
8'd055: data = 64'h0a1433800000c90c ;
8'd056: data = 64'h001430000000c77e ;
8'd057: data = 64'h801030000000ea55 ;
8'd058: data = 64'h0014008188000000 ;
8'd059: data = 64'h1212005120008624 ;
8'd060: data = 64'h0000000000000001 ;
8'd061: data = 64'h0000000001000000 ;
8'd062: data = 64'h001450000000c737 ;
8'd063: data = 64'h0000000001000000 ;
8'd064: data = 64'h8a1030780000861c ;
8'd065: data = 64'h80103000000080b4 ;
8'd066: data = 64'h801030000000861c ;
8'd067: data = 64'h82103018000080b4 ;
8'd068: data = 64'h801030000000812c ;
8'd069: data = 64'h00000000000080b4 ;
8'd070: data = 64'h82103018000080b4 ;
8'd071: data = 64'h0a1430000000c90c ;
8'd072: data = 64'h001430000000c9cc ;
8'd073: data = 64'h000000000000977e ;
8'd074: data = 64'h04100017a0000000 ;
8'd075: data = 64'h0300029188180001 ;
8'd076: data = 64'h001400004b400000 ;
8'd077: data = 64'h5e10001140000000 ;
8'd078: data = 64'h5810501140000000 ;
8'd079: data = 64'h5e95501120008470 ;
8'd080: data = 64'h5e95500000000000 ;
8'd081: data = 64'h80103027c8003cfc ;
8'd082: data = 64'h10100047e00022a4 ;
8'd083: data = 64'h0514000000000000 ;
8'd084: data = 64'h0a000011a0008268 ;
8'd085: data = 64'h2018501140000000 ;
8'd086: data = 64'h5e10001140008470 ;
8'd087: data = 64'h5810500000000000 ;
8'd088: data = 64'h8300039160128350 ;
8'd089: data = 64'h03000017c8100000 ;
8'd090: data = 64'h0000028000000000 ;
8'd091: data = 64'h0000007800008244 ;
8'd092: data = 64'haa120391680283f0 ;
8'd093: data = 64'hca18401720000000 ;
8'd094: data = 64'h0c1850518000c605 ;
8'd095: data = 64'h0020800002800000 ;
8'd096: data = 64'h0014008048000000 ;
8'd097: data = 64'h80103027c8003cfc ;
8'd098: data = 64'h10100047e0002324 ;
8'd099: data = 64'h0514000000000000 ;
8'd100: data = 64'h0a000011a00082b0 ;
8'd101: data = 64'h2018501140000000 ;
8'd102: data = 64'h0300000000108448 ;
8'd103: data = 64'h0300000000100000 ;
8'd104: data = 64'h8300039160120c48 ;
8'd105: data = 64'h03000017c8100000 ;
8'd106: data = 64'h0300000000108330 ;
8'd107: data = 64'h0300000000100000 ;
8'd108: data = 64'haa120391680283f8 ;
8'd109: data = 64'hca18401720000000 ;
8'd110: data = 64'h001430000000c9cd ;
8'd111: data = 64'h0010300003800000 ;
8'd112: data = 64'h8a103380000083d4 ;
8'd113: data = 64'h8010338000008374 ;
8'd114: data = 64'h801033800000870c ;
8'd115: data = 64'h82103380000080b4 ;
8'd116: data = 64'h8a103078000086dc ;
8'd117: data = 64'h8010338000008374 ;
8'd118: data = 64'h82103380000080b4 ;
8'd119: data = 64'h0a1433800000c90c ;
8'd120: data = 64'h001430000000c254 ;
8'd121: data = 64'h00000000000081cc ;
8'd122: data = 64'h0c1850118000c6ee ;
8'd123: data = 64'h03000010c8040000 ;
8'd124: data = 64'haa12001168000bf8 ;
8'd125: data = 64'hca18401720000000 ;
8'd126: data = 64'h78c0400000000000 ;
8'd127: data = 64'h78c0404380000000 ;
8'd128: data = 64'h78c04041e800e400 ;
8'd129: data = 64'h78c0400000000000 ;
8'd130: data = 64'h01105011c800c454 ;
8'd131: data = 64'h041500004800f865 ;
8'd132: data = 64'h0020800113800000 ;
8'd133: data = 64'h0c1853918000c37e ;
8'd134: data = 64'h03000010c8040000 ;
8'd135: data = 64'h8300001160108b4c ;
8'd136: data = 64'h03000017c8100000 ;
8'd137: data = 64'h0700000000000000 ;
8'd138: data = 64'h041440104800f865 ;
8'd139: data = 64'h0020800113800000 ;
8'd140: data = 64'h0b0000158018ae4c ;
8'd141: data = 64'h0414101720008654 ;
8'd142: data = 64'h5e95500000002a54 ;
8'd143: data = 64'h5e955011c800e470 ;
8'd144: data = 64'hde95500000000000 ;
8'd145: data = 64'h101800106800dc9c ;
8'd146: data = 64'h1013400000000000 ;
8'd147: data = 64'h03105000c804c454 ;
8'd148: data = 64'h041500004800f865 ;
8'd149: data = 64'h0020800113800000 ;
8'd150: data = 64'h001850000000ccc4 ;
8'd151: data = 64'h001430000000c736 ;
8'd152: data = 64'h0a145079680171f0 ;
8'd153: data = 64'h0300000168200000 ;
8'd154: data = 64'h88103877c8009d5c ;
8'd155: data = 64'h00000000000087b4 ;
8'd156: data = 64'h8810387728003f6c ;
8'd157: data = 64'h041400172800f865 ;
8'd158: data = 64'h0020800113800000 ;
8'd159: data = 64'h080000604800e2d4 ;
8'd160: data = 64'h041850118000c37e ;
8'd161: data = 64'h03000010c8040000 ;
8'd162: data = 64'h00000027c8008a94 ;
8'd163: data = 64'h0000000000008314 ;
8'd164: data = 64'h001850000000c724 ;
8'd165: data = 64'h001430000000c54c ;
8'd166: data = 64'h0000000000003546 ;
8'd167: data = 64'h0000000000006d4d ;
8'd168: data = 64'h0000000001c00000 ;
8'd169: data = 64'h020000000000858c ;
8'd170: data = 64'h88103077c8001fb4 ;
8'd171: data = 64'h00000015c8009f9c ;
8'd172: data = 64'h0000004000000000 ;
8'd173: data = 64'h0300000168202e34 ;
8'd174: data = 64'h03000408c81c0001 ;
8'd175: data = 64'h002080004b800000 ;
8'd176: data = 64'h001430600000c1fe ;
8'd177: data = 64'h0000000000003546 ;
8'd178: data = 64'h000000000000ed47 ;
8'd179: data = 64'h0000000001800000 ;
8'd180: data = 64'h00000001e800985e ;
8'd181: data = 64'h0000004180000000 ;
8'd182: data = 64'h0300000168200000 ;
8'd183: data = 64'h04142000000087cc ;
8'd184: data = 64'h000000000000bd7e ;
8'd185: data = 64'h0411101188000000 ;
8'd186: data = 64'h00208011c800d73f ;
8'd187: data = 64'h002080004a000000 ;
8'd188: data = 64'h0c1850158000c5fe ;
8'd189: data = 64'h03000010c8040000 ;
8'd190: data = 64'h0200000048009fad ;
8'd191: data = 64'h0014000003800000 ;
8'd192: data = 64'h041030100000977e ;
8'd193: data = 64'h000002800000b77e ;
8'd194: data = 64'h000003000000877e ;
8'd195: data = 64'h101850418000c77e ;
8'd196: data = 64'h0a14507968017040 ;
8'd197: data = 64'h0300001968200000 ;
8'd198: data = 64'h04141400000080a0 ;
8'd199: data = 64'h03000008c81c0000 ;
8'd200: data = 64'h0b00081580182c6c ;
8'd201: data = 64'h001410172000c37e ;
8'd202: data = 64'h03000010c8040000 ;
8'd203: data = 64'h001400004800f865 ;
8'd204: data = 64'h0020800113800000 ;
8'd205: data = 64'h021430000000c37e ;
8'd206: data = 64'h001430100000c37e ;
8'd207: data = 64'h04110000000085bc ;
8'd208: data = 64'h00000000000081fe ;
8'd209: data = 64'h8010300000008584 ;
8'd210: data = 64'h00000060000081fe ;
8'd211: data = 64'h8210301800008584 ;
8'd212: data = 64'h80103000000084b4 ;
8'd213: data = 64'h8010300000008584 ;
8'd214: data = 64'h8210301800008584 ;
8'd215: data = 64'h8010300000008524 ;
8'd216: data = 64'h0a1850000000c9cc ;
8'd217: data = 64'h001850000000c8be ;
8'd218: data = 64'h0000000000008254 ;
8'd219: data = 64'h0c1853800000cef4 ;
8'd220: data = 64'h0c1850000000c255 ;
8'd221: data = 64'h001030018b000000 ;
8'd222: data = 64'h0c1850518000c37e ;
8'd223: data = 64'h03000010c8040000 ;
8'd224: data = 64'h0a000070680083dc ;
8'd225: data = 64'h0c1850718000c37e ;
8'd226: data = 64'h03000010c8040000 ;
8'd227: data = 64'h0a000070680083e4 ;
8'd228: data = 64'h001430000000cd8c ;
8'd229: data = 64'h00000000000091ff ;
8'd230: data = 64'h0000000000000000 ;
8'd231: data = 64'h0020800122000000 ;
8'd232: data = 64'h00000877c8003f55 ;
8'd233: data = 64'h0014000723800000 ;
8'd234: data = 64'h881030786800e0b4 ;
8'd235: data = 64'h04185011e000c37e ;
8'd236: data = 64'h0000001720008654 ;
8'd237: data = 64'h801030106800e784 ;
8'd238: data = 64'h001850100000ce7d ;
8'd239: data = 64'h001400004b800000 ;
8'd240: data = 64'h001430000000c0be ;
8'd241: data = 64'h04100017a000ea54 ;
8'd242: data = 64'h030002918818877e ;
8'd243: data = 64'h03000468c81cafec ;
8'd244: data = 64'h80103000680065e4 ;
8'd245: data = 64'h0410301000008266 ;
8'd246: data = 64'h000002806800e7c4 ;
8'd247: data = 64'h001850100000c37e ;
8'd248: data = 64'h041100100000877e ;
8'd249: data = 64'h002080000000d2ff ;
8'd250: data = 64'h0020800182800000 ;
8'd251: data = 64'h002080111000d5c4 ;
8'd252: data = 64'h00000011200085c4 ;
8'd253: data = 64'h0410001188000001 ;
8'd254: data = 64'h001110004bc00000 ;
8'd255: data = 64'h0000000000000000 ;
endcase
end
endmodule
This page: |
Created: | Thu Aug 19 12:02:34 1999 |
| From: |
../../../sparc_v8/ssparc/fpu/fp_rom/rtl/fp_rom.v
|