📄 mymult.v
字号:
// megafunction wizard: %ALTFP_MULT%
// GENERATION: STANDARD
// VERSION: WM1.0
// MODULE: ALTFP_MULT
// ============================================================
// File Name: mymult.v
// Megafunction Name(s):
// ALTFP_MULT
//
// Simulation Library Files(s):
// lpm
// ============================================================
// ************************************************************
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
//
// 10.0 Build 262 08/18/2010 SP 1 SJ Web Edition
// ************************************************************
//Copyright (C) 1991-2010 Altera Corporation
//Your use of Altera Corporation's design tools, logic functions
//and other software and tools, and its AMPP partner logic
//functions, and any output files from any of the foregoing
//(including device programming or simulation files), and any
//associated documentation or information are expressly subject
//to the terms and conditions of the Altera Program License
//Subscription Agreement, Altera MegaCore Function License
//Agreement, or other applicable license agreement, including,
//without limitation, that your use is for the sole purpose of
//programming logic devices manufactured by Altera and sold by
//Altera or its authorized distributors. Please refer to the
//applicable agreement for further details.
//altfp_mult CBX_AUTO_BLACKBOX="ALL" DEDICATED_MULTIPLIER_CIRCUITRY="YES" DENORMAL_SUPPORT="NO" DEVICE_FAMILY="Stratix III" EXCEPTION_HANDLING="NO" PIPELINE=11 REDUCED_FUNCTIONALITY="NO" ROUNDING="TO_NEAREST" WIDTH_EXP=8 WIDTH_MAN=23 clock dataa datab result
//VERSION_BEGIN 10.0SP1 cbx_alt_ded_mult_y 2010:08:18:22:25:40:SJ cbx_altbarrel_shift 2010:08:18:22:25:40:SJ cbx_altfp_mult 2010:08:18:22:25:40:SJ cbx_altmult_add 2010:08:18:22:25:40:SJ cbx_cycloneii 2010:08:18:22:25:40:SJ cbx_lpm_add_sub 2010:08:18:22:25:40:SJ cbx_lpm_compare 2010:08:18:22:25:40:SJ cbx_lpm_mult 2010:08:18:22:25:40:SJ cbx_mgl 2010:08:18:22:28:55:SJ cbx_padd 2010:08:18:22:25:40:SJ cbx_parallel_add 2010:08:18:22:25:40:SJ cbx_stratix 2010:08:18:22:25:41:SJ cbx_stratixii 2010:08:18:22:25:41:SJ cbx_util_mgl 2010:08:18:22:25:41:SJ VERSION_END
// synthesis VERILOG_INPUT_VERSION VERILOG_2001
// altera message_off 10463
//synthesis_resources = lpm_add_sub 4 lpm_mult 1 reg 293
//synopsys translate_off
`timescale 1 ps / 1 ps
//synopsys translate_on
module mymult_altfp_mult_3tn
(
clock,
dataa,
datab,
result) ;
input clock;
input [31:0] dataa;
input [31:0] datab;
output [31:0] result;
reg dataa_exp_all_one_ff_p1;
reg dataa_exp_not_zero_ff_p1;
reg dataa_man_not_zero_ff_p1;
reg dataa_man_not_zero_ff_p2;
reg datab_exp_all_one_ff_p1;
reg datab_exp_not_zero_ff_p1;
reg datab_man_not_zero_ff_p1;
reg datab_man_not_zero_ff_p2;
reg [9:0] delay_exp2_bias;
reg [9:0] delay_exp3_bias;
reg [9:0] delay_exp_bias;
reg delay_man_product_msb;
reg delay_man_product_msb2;
reg delay_man_product_msb_p0;
reg delay_man_product_msb_p1;
reg [23:0] delay_round;
reg [8:0] exp_add_p1;
reg [9:0] exp_adj_p1;
reg [9:0] exp_adj_p2;
reg [8:0] exp_bias_p1;
reg [8:0] exp_bias_p2;
reg [8:0] exp_bias_p3;
reg [7:0] exp_result_ff;
reg input_is_infinity_dffe_0;
reg input_is_infinity_dffe_1;
reg input_is_infinity_dffe_2;
reg input_is_infinity_dffe_3;
reg input_is_infinity_ff1;
reg input_is_infinity_ff2;
reg input_is_infinity_ff3;
reg input_is_infinity_ff4;
reg input_is_infinity_ff5;
reg input_is_nan_dffe_0;
reg input_is_nan_dffe_1;
reg input_is_nan_dffe_2;
reg input_is_nan_dffe_3;
reg input_is_nan_ff1;
reg input_is_nan_ff2;
reg input_is_nan_ff3;
reg input_is_nan_ff4;
reg input_is_nan_ff5;
reg input_not_zero_dffe_0;
reg input_not_zero_dffe_1;
reg input_not_zero_dffe_2;
reg input_not_zero_dffe_3;
reg input_not_zero_ff1;
reg input_not_zero_ff2;
reg input_not_zero_ff3;
reg input_not_zero_ff4;
reg input_not_zero_ff5;
reg lsb_dffe;
reg [22:0] man_result_ff;
reg man_round_carry;
reg man_round_carry_p0;
reg [23:0] man_round_p;
reg [23:0] man_round_p0;
reg [23:0] man_round_p1;
reg [24:0] man_round_p2;
reg round_dffe;
reg [0:0] sign_node_ff0;
reg [0:0] sign_node_ff1;
reg [0:0] sign_node_ff2;
reg [0:0] sign_node_ff3;
reg [0:0] sign_node_ff4;
reg [0:0] sign_node_ff5;
reg [0:0] sign_node_ff6;
reg [0:0] sign_node_ff7;
reg [0:0] sign_node_ff8;
reg [0:0] sign_node_ff9;
reg [0:0] sign_node_ff10;
reg sticky_dffe;
wire [8:0] wire_exp_add_adder_result;
wire [9:0] wire_exp_adj_adder_result;
wire [9:0] wire_exp_bias_subtr_result;
wire [24:0] wire_man_round_adder_result;
wire [47:0] wire_man_product2_mult_result;
wire aclr;
wire [9:0] bias;
wire clk_en;
wire [7:0] dataa_exp_all_one;
wire [7:0] dataa_exp_not_zero;
wire [22:0] dataa_man_not_zero;
wire [7:0] datab_exp_all_one;
wire [7:0] datab_exp_not_zero;
wire [22:0] datab_man_not_zero;
wire exp_is_inf;
wire exp_is_zero;
wire [9:0] expmod;
wire [7:0] inf_num;
wire lsb_bit;
wire [24:0] man_shift_full;
wire [7:0] result_exp_all_one;
wire [8:0] result_exp_not_zero;
wire round_bit;
wire round_carry;
wire [22:0] sticky_bit;
// synopsys translate_off
initial
dataa_exp_all_one_ff_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) dataa_exp_all_one_ff_p1 <= 1'b0;
else if (clk_en == 1'b1) dataa_exp_all_one_ff_p1 <= dataa_exp_all_one[7];
// synopsys translate_off
initial
dataa_exp_not_zero_ff_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) dataa_exp_not_zero_ff_p1 <= 1'b0;
else if (clk_en == 1'b1) dataa_exp_not_zero_ff_p1 <= dataa_exp_not_zero[7];
// synopsys translate_off
initial
dataa_man_not_zero_ff_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) dataa_man_not_zero_ff_p1 <= 1'b0;
else if (clk_en == 1'b1) dataa_man_not_zero_ff_p1 <= dataa_man_not_zero[10];
// synopsys translate_off
initial
dataa_man_not_zero_ff_p2 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) dataa_man_not_zero_ff_p2 <= 1'b0;
else if (clk_en == 1'b1) dataa_man_not_zero_ff_p2 <= dataa_man_not_zero[22];
// synopsys translate_off
initial
datab_exp_all_one_ff_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) datab_exp_all_one_ff_p1 <= 1'b0;
else if (clk_en == 1'b1) datab_exp_all_one_ff_p1 <= datab_exp_all_one[7];
// synopsys translate_off
initial
datab_exp_not_zero_ff_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) datab_exp_not_zero_ff_p1 <= 1'b0;
else if (clk_en == 1'b1) datab_exp_not_zero_ff_p1 <= datab_exp_not_zero[7];
// synopsys translate_off
initial
datab_man_not_zero_ff_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) datab_man_not_zero_ff_p1 <= 1'b0;
else if (clk_en == 1'b1) datab_man_not_zero_ff_p1 <= datab_man_not_zero[10];
// synopsys translate_off
initial
datab_man_not_zero_ff_p2 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) datab_man_not_zero_ff_p2 <= 1'b0;
else if (clk_en == 1'b1) datab_man_not_zero_ff_p2 <= datab_man_not_zero[22];
// synopsys translate_off
initial
delay_exp2_bias = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_exp2_bias <= 10'b0;
else if (clk_en == 1'b1) delay_exp2_bias <= delay_exp_bias;
// synopsys translate_off
initial
delay_exp3_bias = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_exp3_bias <= 10'b0;
else if (clk_en == 1'b1) delay_exp3_bias <= delay_exp2_bias;
// synopsys translate_off
initial
delay_exp_bias = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_exp_bias <= 10'b0;
else if (clk_en == 1'b1) delay_exp_bias <= wire_exp_bias_subtr_result;
// synopsys translate_off
initial
delay_man_product_msb = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_man_product_msb <= 1'b0;
else if (clk_en == 1'b1) delay_man_product_msb <= delay_man_product_msb_p1;
// synopsys translate_off
initial
delay_man_product_msb2 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_man_product_msb2 <= 1'b0;
else if (clk_en == 1'b1) delay_man_product_msb2 <= delay_man_product_msb;
// synopsys translate_off
initial
delay_man_product_msb_p0 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_man_product_msb_p0 <= 1'b0;
else if (clk_en == 1'b1) delay_man_product_msb_p0 <= wire_man_product2_mult_result[47];
// synopsys translate_off
initial
delay_man_product_msb_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_man_product_msb_p1 <= 1'b0;
else if (clk_en == 1'b1) delay_man_product_msb_p1 <= delay_man_product_msb_p0;
// synopsys translate_off
initial
delay_round = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) delay_round <= 24'b0;
else if (clk_en == 1'b1) delay_round <= ((man_round_p2[23:0] & {24{(~ man_round_p2[24])}}) | (man_round_p2[24:1] & {24{man_round_p2[24]}}));
// synopsys translate_off
initial
exp_add_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) exp_add_p1 <= 9'b0;
else if (clk_en == 1'b1) exp_add_p1 <= wire_exp_add_adder_result;
// synopsys translate_off
initial
exp_adj_p1 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) exp_adj_p1 <= 10'b0;
else if (clk_en == 1'b1) exp_adj_p1 <= delay_exp3_bias;
// synopsys translate_off
initial
exp_adj_p2 = 0;
// synopsys translate_on
always @ ( posedge clock or posedge aclr)
if (aclr == 1'b1) exp_adj_p2 <= 10'b0;
else if (clk_en == 1'b1) exp_adj_p2 <= wire_exp_adj_adder_result;
// synopsys translate_off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -