HierarchyFilesModulesSignalsTasksFunctionsHelp
12345678910


//
// Copyright Notice and Proprietary Information
//
// Copyright (C) 1992 - 1995 Synopsys, Inc. All rights reserved. This Software 
// and manual are owned by Synopsys, Inc., and may be used only as authorized 
// in the license agreement controlling such use. No part of this publication 
// may be reproduced, transmitted, or translated, in any form or by any means, 
// electronic, mechanical, manual, optical, or otherwise, without prior written 
// permission of Synopsys, Inc., or as expressly provided by the license agreement.
//
// Destination Control Statement
//
// All technical data contained in this publication is subject to the export 
// control laws of the United States of America. Disclosure to nationals of other 
// countries contrary to United States law is prohibited. It is the reader's 
// responsibility to determine the applicable regulations and to comply with them.
//
// Disclaimer
//
// Synopsys, Inc., makes no warranty of any kind, express or implied, with regard 
// to this material, including, but not limited to, the implied warranties of 
// merchantability and fitness for a particular purpose.
//
// Synopsys, Inc., reserves the right to make changes without further notice to 
// the products described herein. Synopsys, Inc. does not assume any liability 
// arising out of the application or use of any product or circuit described 
// herein. The Synopsys products described herein are not authorized for use as 
// components in life-support devices.
//
// $Version 5.3.00
// $End_Version
//
// $Version 5.2.22
//	257     fm              03.20.96        mwi on a retry should retry with mwi
//	292     fm              03.20.96        warning when an attempted illegal mwi is issued
//	298     fm              03.20.96        mode=reserved, retry to same address
//	314     fm              03.20.96        par signal timing, setup violation
//	42125   fm              03.20.96        x-transition generic not affecting req
//	42528   fm              03.20.96        fast back-2-back cycles terminated with mct
//	42921   fm              03.20.96        trdy and devsel deasserted before end of data phase
//	42968   fm              03.20.96        change sync_in and sync_out to syncin and syncout
//	42998   fm              03.20.96        'back' and 'same' true at end of master command file causes error
//	43143   fm              03.20.96        trdy and devsel not driven high for 1 clock before floating
//	43144   fm              03.20.96        responding to type 1 config cycles
//	42970   fm              03.14.96        change data_file to cmd_file
//	42964   fm              01.17.96        vgen 8.0 update (vhdl)
//	42961   fm              01.17.96        pci asserts pirdynn without pframenn
//	198     fm              01.3.96         write cmd followed by dual_ad executes as a dual_ad cycle
//	42634   fm              01.3.96         expected addr incorrect in compare message
//	42537   fm              12.8.95         2 read cycles needed to get ret_value
//	233     fm              12.7.95         data64 burst read/write (irdy delay = 1) hangs sim
//	42476   fm              11.14.95        idle(1) command not always causing an idle cycle
//	42366	fm		11.03.95	idle cycles while wait_on_node
//	42349	fm		11.01.95	sequential command and esr's execution in the file mode
//	402	fm		09.19.95	trigger_fix, wait value different cause loop
// $End_Version
//
//
//
//
//
//
//


`lmv_timescale


[Up: pcimaster fm]
module pcimaster_fm
  (pad,pcxbenn,ppar,pframenn,ptrdynn,pirdynn,pstopnn,pdevselnn,pidsel,preqnn
   ,pgntnn,pclk,pclkrunnn,prstnn,pd,pbenn,ppar64,preq64nn,pack64nn,plocknn
   ,pperrnn,pserrnn,psbonn,psdone,syncin,syncout);

inout [31:0] pad;
reg pad_reg_31; assign pad[31] = pad_reg_31;
reg pad_reg_30; assign pad[30] = pad_reg_30;
reg pad_reg_29; assign pad[29] = pad_reg_29;
reg pad_reg_28; assign pad[28] = pad_reg_28;
reg pad_reg_27; assign pad[27] = pad_reg_27;
reg pad_reg_26; assign pad[26] = pad_reg_26;
reg pad_reg_25; assign pad[25] = pad_reg_25;
reg pad_reg_24; assign pad[24] = pad_reg_24;
reg pad_reg_23; assign pad[23] = pad_reg_23;
reg pad_reg_22; assign pad[22] = pad_reg_22;
reg pad_reg_21; assign pad[21] = pad_reg_21;
reg pad_reg_20; assign pad[20] = pad_reg_20;
reg pad_reg_19; assign pad[19] = pad_reg_19;
reg pad_reg_18; assign pad[18] = pad_reg_18;
reg pad_reg_17; assign pad[17] = pad_reg_17;
reg pad_reg_16; assign pad[16] = pad_reg_16;
reg pad_reg_15; assign pad[15] = pad_reg_15;
reg pad_reg_14; assign pad[14] = pad_reg_14;
reg pad_reg_13; assign pad[13] = pad_reg_13;
reg pad_reg_12; assign pad[12] = pad_reg_12;
reg pad_reg_11; assign pad[11] = pad_reg_11;
reg pad_reg_10; assign pad[10] = pad_reg_10;
reg pad_reg_9; assign pad[9] = pad_reg_9;
reg pad_reg_8; assign pad[8] = pad_reg_8;
reg pad_reg_7; assign pad[7] = pad_reg_7;
reg pad_reg_6; assign pad[6] = pad_reg_6;
reg pad_reg_5; assign pad[5] = pad_reg_5;
reg pad_reg_4; assign pad[4] = pad_reg_4;
reg pad_reg_3; assign pad[3] = pad_reg_3;
reg pad_reg_2; assign pad[2] = pad_reg_2;
reg pad_reg_1; assign pad[1] = pad_reg_1;
reg pad_reg_0; assign pad[0] = pad_reg_0;
inout [3:0] pcxbenn;
reg pcxbenn_reg_3; assign pcxbenn[3] = pcxbenn_reg_3;
reg pcxbenn_reg_2; assign pcxbenn[2] = pcxbenn_reg_2;
reg pcxbenn_reg_1; assign pcxbenn[1] = pcxbenn_reg_1;
reg pcxbenn_reg_0; assign pcxbenn[0] = pcxbenn_reg_0;
inout ppar; reg ppar_reg; assign ppar = ppar_reg;
inout pframenn; reg pframenn_reg; assign pframenn = pframenn_reg;
inout ptrdynn; reg ptrdynn_reg; assign ptrdynn = ptrdynn_reg;
inout pirdynn; reg pirdynn_reg; assign pirdynn = pirdynn_reg;
input pstopnn;
inout pdevselnn; reg pdevselnn_reg; assign pdevselnn = pdevselnn_reg;
input pidsel;
inout preqnn; reg preqnn_reg; assign preqnn = preqnn_reg;
input pgntnn;
input pclk;
inout pclkrunnn; reg pclkrunnn_reg; assign pclkrunnn = pclkrunnn_reg;
input prstnn;
inout [63:32] pd;
reg pd_reg_63; assign pd[63] = pd_reg_63;
reg pd_reg_62; assign pd[62] = pd_reg_62;
reg pd_reg_61; assign pd[61] = pd_reg_61;
reg pd_reg_60; assign pd[60] = pd_reg_60;
reg pd_reg_59; assign pd[59] = pd_reg_59;
reg pd_reg_58; assign pd[58] = pd_reg_58;
reg pd_reg_57; assign pd[57] = pd_reg_57;
reg pd_reg_56; assign pd[56] = pd_reg_56;
reg pd_reg_55; assign pd[55] = pd_reg_55;
reg pd_reg_54; assign pd[54] = pd_reg_54;
reg pd_reg_53; assign pd[53] = pd_reg_53;
reg pd_reg_52; assign pd[52] = pd_reg_52;
reg pd_reg_51; assign pd[51] = pd_reg_51;
reg pd_reg_50; assign pd[50] = pd_reg_50;
reg pd_reg_49; assign pd[49] = pd_reg_49;
reg pd_reg_48; assign pd[48] = pd_reg_48;
reg pd_reg_47; assign pd[47] = pd_reg_47;
reg pd_reg_46; assign pd[46] = pd_reg_46;
reg pd_reg_45; assign pd[45] = pd_reg_45;
reg pd_reg_44; assign pd[44] = pd_reg_44;
reg pd_reg_43; assign pd[43] = pd_reg_43;
reg pd_reg_42; assign pd[42] = pd_reg_42;
reg pd_reg_41; assign pd[41] = pd_reg_41;
reg pd_reg_40; assign pd[40] = pd_reg_40;
reg pd_reg_39; assign pd[39] = pd_reg_39;
reg pd_reg_38; assign pd[38] = pd_reg_38;
reg pd_reg_37; assign pd[37] = pd_reg_37;
reg pd_reg_36; assign pd[36] = pd_reg_36;
reg pd_reg_35; assign pd[35] = pd_reg_35;
reg pd_reg_34; assign pd[34] = pd_reg_34;
reg pd_reg_33; assign pd[33] = pd_reg_33;
reg pd_reg_32; assign pd[32] = pd_reg_32;
inout [7:4] pbenn;
reg pbenn_reg_7; assign pbenn[7] = pbenn_reg_7;
reg pbenn_reg_6; assign pbenn[6] = pbenn_reg_6;
reg pbenn_reg_5; assign pbenn[5] = pbenn_reg_5;
reg pbenn_reg_4; assign pbenn[4] = pbenn_reg_4;
inout ppar64; reg ppar64_reg; assign ppar64 = ppar64_reg;
inout preq64nn; reg preq64nn_reg; assign preq64nn = preq64nn_reg;
input pack64nn;
inout plocknn; reg plocknn_reg; assign plocknn = plocknn_reg;
inout pperrnn; reg pperrnn_reg; assign pperrnn = pperrnn_reg;
input pserrnn;
input psbonn;
input psdone;
input [7:0] syncin;
output [7:0] syncout; reg [7:0] syncout;

pcimaster_fm_data_out fm_rsp();
reg [127:0] ret_val; // OUT ret_data_ary_type

parameter version         = "pci33",
          gen_global      = `true,
          gen_option      = `lmv_maximum,
          gen_time_check  = `true,
          gen_x_check     = `true,
          gen_annotated   = `false,
          gen_debug_level = 0,
          gen_vlt         = 5000,
          gen_tmp         = 300,
          gen_DF          = 100;
parameter x_transition    = `true,
          device_id       = 16'h0000,
          vendor_id       = 16'h0000,
          revision_id     = 8'h00,
          class_code      = 24'h0000,
          cacheline_size  = 8'h00,
          max_clk_period  = 0 * `time_scale_multiplier,
          to_limit        = 128, // number of consecutive data phase clocks
                                 // that a master is guaranteed.
          retry_limit     = 3,   // number of retry cycles that
                                 // a master is guaranteed.
          id_number       = 0,
          cmd_file        = "pcimaster_tst.cmd";

pcimaster_timing timing();  // instantiation of timing package
pcimaster_fm_input INP();
pcimaster_fm_cntrl CNTRL();
pcimaster_flags model_flags();
pcimaster_times model_times();
reg init_finished; initial init_finished = `false;

// TIMING INITIALIZATION PROCESS
initial
begin : init_process
  CNTRL.pad = `true;
  CNTRL.pad_in = `true;
  CNTRL.r_pad_pclk = `true;
  CNTRL.pcxbenn = `true;
  CNTRL.pcxbenn_in = `true;
  CNTRL.r_pcxbenn_pclk = `true;
  CNTRL.ppar = `true;
  CNTRL.ppar_in = `true;
  CNTRL.r_ppar_pclk = `true;
  CNTRL.pframenn = `true;
  CNTRL.pframenn_in = `true;
  CNTRL.r_pframenn_pclk = `true;
  CNTRL.ptrdynn = `true;
  CNTRL.ptrdynn_in = `true;
  CNTRL.r_ptrdynn_pclk = `true;
  CNTRL.pirdynn = `true;
  CNTRL.pirdynn_in = `true;
  CNTRL.r_pirdynn_pclk = `true;
  CNTRL.pstopnn = `true;
  CNTRL.r_pstopnn_pclk = `true;
  CNTRL.pdevselnn = `true;
  CNTRL.pdevselnn_in = `true;
  CNTRL.r_pdevselnn_pclk = `true;
  CNTRL.pidsel = `true;
  CNTRL.r_pidsel_pclk = `true;
  CNTRL.preqnn = `true;
  CNTRL.preqnn_in = `true;
  CNTRL.r_preqnn_pclk = `true;
  CNTRL.pgntnn = `true;
  CNTRL.r_pgntnn_pclk = `true;
  CNTRL.pclk = `true;
  CNTRL.ck_pclk = `true;
  CNTRL.pclkrunnn = `true;
  CNTRL.pclkrunnn_in = `true;
  CNTRL.r_pclkrunnn_pclk = `true;
  CNTRL.prstnn = `true;
  CNTRL.ck_prstnn = `true;
  CNTRL.pd = `true;
  CNTRL.pd_in = `true;
  CNTRL.r_pd_pclk = `true;
  CNTRL.pbenn = `true;
  CNTRL.pbenn_in = `true;
  CNTRL.r_pbenn_pclk = `true;
  CNTRL.ppar64 = `true;
  CNTRL.ppar64_in = `true;
  CNTRL.r_ppar64_pclk = `true;
  CNTRL.preq64nn = `true;
  CNTRL.preq64nn_in = `true;
  CNTRL.r_preq64nn_pclk = `true;
  CNTRL.pack64nn = `true;
  CNTRL.r_pack64nn_pclk = `true;
  CNTRL.plocknn = `true;
  CNTRL.plocknn_in = `true;
  CNTRL.r_plocknn_pclk = `true;
  CNTRL.pperrnn = `true;
  CNTRL.pperrnn_in = `true;
  CNTRL.r_pperrnn_pclk = `true;
  CNTRL.pserrnn = `true;
  CNTRL.r_pserrnn_pclk = `true;
  CNTRL.psbonn = `true;
  CNTRL.r_psbonn_pclk = `true;
  CNTRL.psdone = `true;
  CNTRL.r_psdone_pclk = `true;
  if (gen_global === `true) begin
    lmcver.get_flags(model_flags.option,model_flags.time_check,model_flags.x_check,
       model_flags.annotated,model_flags.debug_level,
       model_flags.vlt,model_flags.tmp,model_flags.DF);
  end else begin
    model_flags.option = gen_option;
    model_flags.time_check = gen_time_check;
    model_flags.x_check = gen_x_check;
    model_flags.annotated = gen_annotated;
    model_flags.vlt = gen_vlt;
    model_flags.tmp = gen_tmp;
    model_flags.DF = gen_DF;
  end
  model_flags.debug_level = gen_debug_level;
  timing.get_timing(
    model_times.trs_pad_pclk,
    model_times.trh_pad_pclk,
    model_times.twd_pad[31],
    model_times.twd_pad[30],
    model_times.twd_pad[29],
    model_times.twd_pad[28],
    model_times.twd_pad[27],
    model_times.twd_pad[26],
    model_times.twd_pad[25],
    model_times.twd_pad[24],
    model_times.twd_pad[23],
    model_times.twd_pad[22],
    model_times.twd_pad[21],
    model_times.twd_pad[20],
    model_times.twd_pad[19],
    model_times.twd_pad[18],
    model_times.twd_pad[17],
    model_times.twd_pad[16],
    model_times.twd_pad[15],
    model_times.twd_pad[14],
    model_times.twd_pad[13],
    model_times.twd_pad[12],
    model_times.twd_pad[11],
    model_times.twd_pad[10],
    model_times.twd_pad[9],
    model_times.twd_pad[8],
    model_times.twd_pad[7],
    model_times.twd_pad[6],
    model_times.twd_pad[5],
    model_times.twd_pad[4],
    model_times.twd_pad[3],
    model_times.twd_pad[2],
    model_times.twd_pad[1],
    model_times.twd_pad[0],
    model_times.tpr_pclk_pad[31:0],
    model_times.tpr_pclk_pad[63:32],
    model_times.tpr_pclk_pad[95:64],
    model_times.tpr_pclk_pad[127:96],
    model_times.thrx_pclk_pad,
    model_times.tld_pad[31],
    model_times.tld_pad[30],
    model_times.tld_pad[29],
    model_times.tld_pad[28],
    model_times.tld_pad[27],
    model_times.tld_pad[26],
    model_times.tld_pad[25],
    model_times.tld_pad[24],
    model_times.tld_pad[23],
    model_times.tld_pad[22],
    model_times.tld_pad[21],
    model_times.tld_pad[20],
    model_times.tld_pad[19],
    model_times.tld_pad[18],
    model_times.tld_pad[17],
    model_times.tld_pad[16],
    model_times.tld_pad[15],
    model_times.tld_pad[14],
    model_times.tld_pad[13],
    model_times.tld_pad[12],
    model_times.tld_pad[11],
    model_times.tld_pad[10],
    model_times.tld_pad[9],
    model_times.tld_pad[8],
    model_times.tld_pad[7],
    model_times.tld_pad[6],
    model_times.tld_pad[5],
    model_times.tld_pad[4],
    model_times.tld_pad[3],
    model_times.tld_pad[2],
    model_times.tld_pad[1],
    model_times.tld_pad[0],
    model_times.trs_pcxbenn_pclk,
    model_times.trh_pcxbenn_pclk,
    model_times.twd_pcxbenn[3],
    model_times.twd_pcxbenn[2],
    model_times.twd_pcxbenn[1],
    model_times.twd_pcxbenn[0],
    model_times.tpr_pclk_pcxbenn[31:0],
    model_times.tpr_pclk_pcxbenn[63:32],
    model_times.tpr_pclk_pcxbenn[95:64],
    model_times.tpr_pclk_pcxbenn[127:96],
    model_times.thrx_pclk_pcxbenn,
    model_times.tld_pcxbenn[3],
    model_times.tld_pcxbenn[2],
    model_times.tld_pcxbenn[1],
    model_times.tld_pcxbenn[0],
    model_times.trs_ppar_pclk,
    model_times.trh_ppar_pclk,
    model_times.twd_ppar,
    model_times.tpr_pclk_ppar[31:0],
    model_times.tpr_pclk_ppar[63:32],
    model_times.tpr_pclk_ppar[95:64],
    model_times.tpr_pclk_ppar[127:96],
    model_times.thrx_pclk_ppar,
    model_times.tld_ppar,
    model_times.trs_pframenn_pclk,
    model_times.trh_pframenn_pclk,
    model_times.twd_pframenn,
    model_times.tpr_pclk_pframenn[31:0],
    model_times.tpr_pclk_pframenn[63:32],
    model_times.tpr_pclk_pframenn[95:64],
    model_times.tpr_pclk_pframenn[127:96],
    model_times.thrx_pclk_pframenn,
    model_times.tld_pframenn,
    model_times.trs_ptrdynn_pclk,
    model_times.trh_ptrdynn_pclk,
    model_times.twd_ptrdynn,
    model_times.tpr_pclk_ptrdynn[31:0],
    model_times.tpr_pclk_ptrdynn[63:32],
    model_times.tpr_pclk_ptrdynn[95:64],
    model_times.tpr_pclk_ptrdynn[127:96],
    model_times.thrx_pclk_ptrdynn,
    model_times.tld_ptrdynn,
    model_times.trs_pirdynn_pclk,
    model_times.trh_pirdynn_pclk,
    model_times.twd_pirdynn,
    model_times.tpr_pclk_pirdynn[31:0],
    model_times.tpr_pclk_pirdynn[63:32],
    model_times.tpr_pclk_pirdynn[95:64],
    model_times.tpr_pclk_pirdynn[127:96],
    model_times.thrx_pclk_pirdynn,
    model_times.tld_pirdynn,
    model_times.trs_pstopnn_pclk,
    model_times.trh_pstopnn_pclk,
    model_times.twd_pstopnn,
    model_times.trs_pdevselnn_pclk,
    model_times.trh_pdevselnn_pclk,
    model_times.twd_pdevselnn,
    model_times.tpr_pclk_pdevselnn[31:0],
    model_times.tpr_pclk_pdevselnn[63:32],
    model_times.tpr_pclk_pdevselnn[95:64],
    model_times.tpr_pclk_pdevselnn[127:96],
    model_times.thrx_pclk_pdevselnn,
    model_times.tld_pdevselnn,
    model_times.trs_pidsel_pclk,
    model_times.trh_pidsel_pclk,
    model_times.twd_pidsel,
    model_times.trs_preqnn_pclk,
    model_times.trh_preqnn_pclk,
    model_times.twd_preqnn,
    model_times.tpr_pclk_preqnn[31:0],
    model_times.tpr_pclk_preqnn[63:32],
    model_times.tpr_pclk_preqnn[95:64],
    model_times.tpr_pclk_preqnn[127:96],
    model_times.thrx_pclk_preqnn,
    model_times.tld_preqnn,
    model_times.trs_pgntnn_pclk,
    model_times.trh_pgntnn_pclk,
    model_times.twd_pgntnn,
    model_times.tcy_min_pclk,
    model_times.tcy_max_pclk,
    model_times.tpwh_min_pclk,
    model_times.tpwh_max_pclk,
    model_times.tpwl_min_pclk,
    model_times.tpwl_max_pclk,
    model_times.twd_pclk,
    model_times.trs_pclkrunnn_pclk,
    model_times.trh_pclkrunnn_pclk,
    model_times.twd_pclkrunnn,
    model_times.tpr_pclk_pclkrunnn[31:0],
    model_times.tpr_pclk_pclkrunnn[63:32],
    model_times.tpr_pclk_pclkrunnn[95:64],
    model_times.tpr_pclk_pclkrunnn[127:96],
    model_times.tld_pclkrunnn,
    model_times.tcy_min_prstnn,
    model_times.tcy_max_prstnn,
    model_times.tpwh_min_prstnn,
    model_times.tpwh_max_prstnn,
    model_times.tpwl_min_prstnn,
    model_times.tpwl_max_prstnn,
    model_times.twd_prstnn,
    model_times.trs_pd_pclk,
    model_times.trh_pd_pclk,
    model_times.twd_pd[63],
    model_times.twd_pd[62],
    model_times.twd_pd[61],
    model_times.twd_pd[60],
    model_times.twd_pd[59],
    model_times.twd_pd[58],
    model_times.twd_pd[57],
    model_times.twd_pd[56],
    model_times.twd_pd[55],
    model_times.twd_pd[54],
    model_times.twd_pd[53],
    model_times.twd_pd[52],
    model_times.twd_pd[51],
    model_times.twd_pd[50],
    model_times.twd_pd[49],
    model_times.twd_pd[48],
    model_times.twd_pd[47],
    model_times.twd_pd[46],
    model_times.twd_pd[45],
    model_times.twd_pd[44],
    model_times.twd_pd[43],
    model_times.twd_pd[42],
    model_times.twd_pd[41],
    model_times.twd_pd[40],
    model_times.twd_pd[39],
    model_times.twd_pd[38],
    model_times.twd_pd[37],
    model_times.twd_pd[36],
    model_times.twd_pd[35],
    model_times.twd_pd[34],
    model_times.twd_pd[33],
    model_times.twd_pd[32],
    model_times.tpr_pclk_pd[31:0],
    model_times.tpr_pclk_pd[63:32],
    model_times.tpr_pclk_pd[95:64],
    model_times.tpr_pclk_pd[127:96],
    model_times.thrx_pclk_pd,
    model_times.tld_pd[63],
    model_times.tld_pd[62],
    model_times.tld_pd[61],
    model_times.tld_pd[60],
    model_times.tld_pd[59],
    model_times.tld_pd[58],
    model_times.tld_pd[57],
    model_times.tld_pd[56],
    model_times.tld_pd[55],
    model_times.tld_pd[54],
    model_times.tld_pd[53],
    model_times.tld_pd[52],
    model_times.tld_pd[51],
    model_times.tld_pd[50],
    model_times.tld_pd[49],
    model_times.tld_pd[48],
    model_times.tld_pd[47],
    model_times.tld_pd[46],
    model_times.tld_pd[45],
    model_times.tld_pd[44],
    model_times.tld_pd[43],
    model_times.tld_pd[42],
    model_times.tld_pd[41],
    model_times.tld_pd[40],
    model_times.tld_pd[39],
    model_times.tld_pd[38],
    model_times.tld_pd[37],
    model_times.tld_pd[36],
    model_times.tld_pd[35],
    model_times.tld_pd[34],
    model_times.tld_pd[33],
    model_times.tld_pd[32],
    model_times.trs_pbenn_pclk,
    model_times.trh_pbenn_pclk,
    model_times.twd_pbenn[7],
    model_times.twd_pbenn[6],
    model_times.twd_pbenn[5],
    model_times.twd_pbenn[4],
    model_times.tpr_pclk_pbenn[31:0],
    model_times.tpr_pclk_pbenn[63:32],
    model_times.tpr_pclk_pbenn[95:64],
    model_times.tpr_pclk_pbenn[127:96],
    model_times.thrx_pclk_pbenn,
    model_times.tld_pbenn[7],
    model_times.tld_pbenn[6],
    model_times.tld_pbenn[5],
    model_times.tld_pbenn[4],
    model_times.trs_ppar64_pclk,
    model_times.trh_ppar64_pclk,
    model_times.twd_ppar64,
    model_times.tpr_pclk_ppar64[31:0],
    model_times.tpr_pclk_ppar64[63:32],
    model_times.tpr_pclk_ppar64[95:64],
    model_times.tpr_pclk_ppar64[127:96],
    model_times.thrx_pclk_ppar64,
    model_times.tld_ppar64,
    model_times.trs_preq64nn_pclk,
    model_times.trh_preq64nn_pclk,
    model_times.twd_preq64nn,
    model_times.tpr_pclk_preq64nn[31:0],
    model_times.tpr_pclk_preq64nn[63:32],
    model_times.tpr_pclk_preq64nn[95:64],
    model_times.tpr_pclk_preq64nn[127:96],
    model_times.thrx_pclk_preq64nn,
    model_times.tld_preq64nn,
    model_times.trs_pack64nn_pclk,
    model_times.trh_pack64nn_pclk,
    model_times.twd_pack64nn,
    model_times.trs_plocknn_pclk,
    model_times.trh_plocknn_pclk,
    model_times.twd_plocknn,
    model_times.tpr_pclk_plocknn[31:0],
    model_times.tpr_pclk_plocknn[63:32],
    model_times.tpr_pclk_plocknn[95:64],
    model_times.tpr_pclk_plocknn[127:96],
    model_times.thrx_pclk_plocknn,
    model_times.tld_plocknn,
    model_times.trs_pperrnn_pclk,
    model_times.trh_pperrnn_pclk,
    model_times.twd_pperrnn,
    model_times.tpr_pclk_pperrnn[31:0],
    model_times.tpr_pclk_pperrnn[63:32],
    model_times.tpr_pclk_pperrnn[95:64],
    model_times.tpr_pclk_pperrnn[127:96],
    model_times.thrx_pclk_pperrnn,
    model_times.tld_pperrnn,
    model_times.trs_pserrnn_pclk,
    model_times.trh_pserrnn_pclk,
    model_times.twd_pserrnn,
    model_times.trs_psbonn_pclk,
    model_times.trh_psbonn_pclk,
    model_times.twd_psbonn,
    model_times.trs_psdone_pclk,
    model_times.trh_psdone_pclk,
    model_times.twd_psdone,
    model_times.tpd_prstnn_pad[31:0],
    model_times.tpd_prstnn_pad[63:32],
    model_times.tpd_prstnn_pad[95:64],
    model_times.tpd_prstnn_pad[127:96],
    model_times.tpd_prstnn_pd[31:0],
    model_times.tpd_prstnn_pd[63:32],
    model_times.tpd_prstnn_pd[95:64],
    model_times.tpd_prstnn_pd[127:96],
    model_times.tpd_prstnn_pcxbenn[31:0],
    model_times.tpd_prstnn_pcxbenn[63:32],
    model_times.tpd_prstnn_pcxbenn[95:64],
    model_times.tpd_prstnn_pcxbenn[127:96],
    model_times.tpd_prstnn_pbenn[31:0],
    model_times.tpd_prstnn_pbenn[63:32],
    model_times.tpd_prstnn_pbenn[95:64],
    model_times.tpd_prstnn_pbenn[127:96],
    model_times.tpd_prstnn_preqnn[31:0],
    model_times.tpd_prstnn_preqnn[63:32],
    model_times.tpd_prstnn_preqnn[95:64],
    model_times.tpd_prstnn_preqnn[127:96],
    model_times.tpd_prstnn_preq64nn[31:0],
    model_times.tpd_prstnn_preq64nn[63:32],
    model_times.tpd_prstnn_preq64nn[95:64],
    model_times.tpd_prstnn_preq64nn[127:96],
    model_times.tpd_prstnn_ppar[31:0],
    model_times.tpd_prstnn_ppar[63:32],
    model_times.tpd_prstnn_ppar[95:64],
    model_times.tpd_prstnn_ppar[127:96],
    model_times.tpd_prstnn_ppar64[31:0],
    model_times.tpd_prstnn_ppar64[63:32],
    model_times.tpd_prstnn_ppar64[95:64],
    model_times.tpd_prstnn_ppar64[127:96],
    model_times.tpd_prstnn_pperrnn[31:0],
    model_times.tpd_prstnn_pperrnn[63:32],
    model_times.tpd_prstnn_pperrnn[95:64],
    model_times.tpd_prstnn_pperrnn[127:96],
    model_times.tpd_prstnn_pirdynn[31:0],
    model_times.tpd_prstnn_pirdynn[63:32],
    model_times.tpd_prstnn_pirdynn[95:64],
    model_times.tpd_prstnn_pirdynn[127:96],
    model_times.tpd_prstnn_pframenn[31:0],
    model_times.tpd_prstnn_pframenn[63:32],
    model_times.tpd_prstnn_pframenn[95:64],
    model_times.tpd_prstnn_pframenn[127:96],
    model_times.tpd_prstnn_plocknn[31:0],
    model_times.tpd_prstnn_plocknn[63:32],
    model_times.tpd_prstnn_plocknn[95:64],
    model_times.tpd_prstnn_plocknn[127:96],
    model_times.tpd_prstnn_pdevselnn[31:0],
    model_times.tpd_prstnn_pdevselnn[63:32],
    model_times.tpd_prstnn_pdevselnn[95:64],
    model_times.tpd_prstnn_pdevselnn[127:96],
    model_times.tpd_prstnn_ptrdynn[31:0],
    model_times.tpd_prstnn_ptrdynn[63:32],
    model_times.tpd_prstnn_ptrdynn[95:64],
    model_times.tpd_prstnn_ptrdynn[127:96],
    model_flags.option,
    model_flags.annotated,
    model_flags.vlt,
    model_flags.tmp,
    model_flags.DF,
    version);
  pclk_check.last_rising = -50*`time_scale_multiplier;
  pclk_check.last_falling = -50*`time_scale_multiplier;
  prstnn_check.last_rising = -50*`time_scale_multiplier;
  prstnn_check.last_falling = -50*`time_scale_multiplier;
  init_finished = `true;
end // init_process

// Performs all TIMING CHECKS and X-CHECKs for signal PCLK
always begin : pclk_check
reg wait_for_0;
integer last_rising, last_falling;
  if (init_finished !== `true) begin
    wait (init_finished === `true);
  end
  if (model_flags.time_check !== `true && model_flags.x_check !== `true) begin

// Kill process if NOT USED in simulation
    wait(`false);
  end else begin
    @(INP.pclk or CNTRL.pclk); 
    wait_for_0 = `true;
    wait_for_0 <= #(0) `false;
    @(negedge wait_for_0);
    INP.pclk_last_event = $time - INP.pclk_event_time;
    INP.pad_last_event = $time - INP.pad_event_time;
    INP.pcxbenn_last_event = $time - INP.pcxbenn_event_time;
    INP.ppar_last_event = $time - INP.ppar_event_time;
    INP.pframenn_last_event = $time - INP.pframenn_event_time;
    INP.ptrdynn_last_event = $time - INP.ptrdynn_event_time;
    INP.pirdynn_last_event = $time - INP.pirdynn_event_time;
    INP.pstopnn_last_event = $time - INP.pstopnn_event_time;
    INP.pdevselnn_last_event = $time - INP.pdevselnn_event_time;
    INP.pidsel_last_event = $time - INP.pidsel_event_time;
    INP.preqnn_last_event = $time - INP.preqnn_event_time;
    INP.pgntnn_last_event = $time - INP.pgntnn_event_time;
    INP.pclk_last_event = $time - INP.pclk_event_time;
    INP.pclkrunnn_last_event = $time - INP.pclkrunnn_event_time;
    INP.prstnn_last_event = $time - INP.prstnn_event_time;
    INP.pd_last_event = $time - INP.pd_event_time;
    INP.pbenn_last_event = $time - INP.pbenn_event_time;
    INP.ppar64_last_event = $time - INP.ppar64_event_time;
    INP.preq64nn_last_event = $time - INP.preq64nn_event_time;
    INP.pack64nn_last_event = $time - INP.pack64nn_event_time;
    INP.plocknn_last_event = $time - INP.plocknn_event_time;
    INP.pperrnn_last_event = $time - INP.pperrnn_event_time;
    INP.pserrnn_last_event = $time - INP.pserrnn_event_time;
    INP.psbonn_last_event = $time - INP.psbonn_event_time;
    INP.psdone_last_event = $time - INP.psdone_event_time;
    if ($time > 1 && CNTRL.pclk && INP.pclk_last_event <= (2*`time_unit)) begin 
      if (model_flags.time_check) begin
        if (INP.pclk === 1'b1) begin

// Check cycle, pulse width low, and rising edge setup times
          if (last_rising > 0 && $time - last_rising < model_times.tcy_min_pclk && CNTRL.ck_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Cycle period is too short on pin pclk\"");
          end
          if (last_rising > 0 && model_times.tcy_max_pclk != 0 &&
              $time - last_rising > model_times.tcy_max_pclk && CNTRL.ck_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Cycle period is too long on pin pclk\"");
          end
          if (last_falling > 0 && $time - last_falling < model_times.tpwl_min_pclk && CNTRL.ck_pclk) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width low period is too short on pin pclk\"");
          end
          if (last_falling > 0 && model_times.tpwl_max_pclk != 0 &&
              $time - last_falling > model_times.tpwl_max_pclk && CNTRL.ck_pclk) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width low period is too long on pin pclk\"");
          end
          last_rising = $time;
          if ((INP.pad_last_event < model_times.trs_pad_pclk) &&
              CNTRL.pad_in && CNTRL.r_pad_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pad and pclk\"");  
          end
          if ((INP.pcxbenn_last_event < model_times.trs_pcxbenn_pclk) &&
              CNTRL.pcxbenn_in && CNTRL.r_pcxbenn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pcxbenn and pclk\"");  
          end
          if ((INP.ppar_last_event < model_times.trs_ppar_pclk) &&
              CNTRL.ppar_in && CNTRL.r_ppar_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins ppar and pclk\"");  
          end
          if ((INP.pframenn_last_event < model_times.trs_pframenn_pclk) &&
              CNTRL.pframenn_in && CNTRL.r_pframenn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pframenn and pclk\"");  
          end
          if ((INP.ptrdynn_last_event < model_times.trs_ptrdynn_pclk) &&
              CNTRL.ptrdynn_in && CNTRL.r_ptrdynn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins ptrdynn and pclk\"");  
          end
          if ((INP.pirdynn_last_event < model_times.trs_pirdynn_pclk) &&
              CNTRL.pirdynn_in && CNTRL.r_pirdynn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pirdynn and pclk\"");  
          end
          if ((INP.pstopnn_last_event < model_times.trs_pstopnn_pclk) &&
              CNTRL.pstopnn && CNTRL.r_pstopnn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pstopnn and pclk\"");  
          end
          if ((INP.pdevselnn_last_event < model_times.trs_pdevselnn_pclk) &&
              CNTRL.pdevselnn_in && CNTRL.r_pdevselnn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pdevselnn and pclk\"");  
          end
          if ((INP.pidsel_last_event < model_times.trs_pidsel_pclk) &&
              CNTRL.pidsel && CNTRL.r_pidsel_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pidsel and pclk\"");  
          end
          if ((INP.preqnn_last_event < model_times.trs_preqnn_pclk) &&
              CNTRL.preqnn_in && CNTRL.r_preqnn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins preqnn and pclk\"");  
          end
          if ((INP.pgntnn_last_event < model_times.trs_pgntnn_pclk) &&
              CNTRL.pgntnn && CNTRL.r_pgntnn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pgntnn and pclk\"");  
          end
          if ((INP.pclkrunnn_last_event < model_times.trs_pclkrunnn_pclk) &&
              CNTRL.pclkrunnn_in && CNTRL.r_pclkrunnn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pclkrunnn and pclk\"");  
          end
          if ((INP.pd_last_event < model_times.trs_pd_pclk) &&
              CNTRL.pd_in && CNTRL.r_pd_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pd and pclk\"");  
          end
          if ((INP.pbenn_last_event < model_times.trs_pbenn_pclk) &&
              CNTRL.pbenn_in && CNTRL.r_pbenn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pbenn and pclk\"");  
          end
          if ((INP.ppar64_last_event < model_times.trs_ppar64_pclk) &&
              CNTRL.ppar64_in && CNTRL.r_ppar64_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins ppar64 and pclk\"");  
          end
          if ((INP.preq64nn_last_event < model_times.trs_preq64nn_pclk) &&
              CNTRL.preq64nn_in && CNTRL.r_preq64nn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins preq64nn and pclk\"");  
          end
          if ((INP.pack64nn_last_event < model_times.trs_pack64nn_pclk) &&
              CNTRL.pack64nn && CNTRL.r_pack64nn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pack64nn and pclk\"");  
          end
          if ((INP.plocknn_last_event < model_times.trs_plocknn_pclk) &&
              CNTRL.plocknn_in && CNTRL.r_plocknn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins plocknn and pclk\"");  
          end
          if ((INP.pperrnn_last_event < model_times.trs_pperrnn_pclk) &&
              CNTRL.pperrnn_in && CNTRL.r_pperrnn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pperrnn and pclk\"");  
          end
          if ((INP.pserrnn_last_event < model_times.trs_pserrnn_pclk) &&
              CNTRL.pserrnn && CNTRL.r_pserrnn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins pserrnn and pclk\"");  
          end
          if ((INP.psbonn_last_event < model_times.trs_psbonn_pclk) &&
              CNTRL.psbonn && CNTRL.r_psbonn_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins psbonn and pclk\"");  
          end
          if ((INP.psdone_last_event < model_times.trs_psdone_pclk) &&
              CNTRL.psdone && CNTRL.r_psdone_pclk) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Setup timing violation between pins psdone and pclk\"");  
          end
        end else if (INP.pclk === 1'b0) begin

// Check pulse width high, and falling edge setup times
          if (last_rising > 0 && $time - last_rising < model_times.tpwh_min_pclk && CNTRL.ck_pclk) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width high period is too short on pin pclk\"");
          end
          if (last_rising > 0 && model_times.tpwh_max_pclk != 0 &&
              $time - last_rising > model_times.tpwh_max_pclk && CNTRL.ck_pclk) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width high period is too long on pin pclk\"");
          end
          last_falling = $time;
        end
      end
      if (model_flags.x_check) begin
        if (INP.pclk === 1'bx) begin

// Check for UNKNOWN value on control/clock pin
          $display("WARNING at time %0t from %m",$time);
          $display("     \"Unknown value on pin pclk will be ignored\"");
        end
      end
    end else if ($time > 1 && INP.pclk_event) begin
      if (INP.pclk === 1'b1) begin
        last_rising = $time;
      end else if (INP.pclk === 1'b0) begin
        last_falling = $time;
      end
    end
    if ($time > 1 && model_flags.x_check) begin
      if (INP.pclk === 1'b1) begin
//        if (INP.ptrdynn === 1'bx && CNTRL.ptrdynn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Unknown value on ptrdynn input\"");
//        end
//        if (INP.ptrdynn === 1'bz && CNTRL.ptrdynn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Hi-Z value on ptrdynn input\"");
//        end
//        if (INP.pstopnn === 1'bx && CNTRL.pstopnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Unknown value on pstopnn input\"");
//        end
//        if (INP.pstopnn === 1'bz && CNTRL.pstopnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Hi-Z value on pstopnn input\"");
//        end
//        if (INP.pdevselnn === 1'bx && CNTRL.pdevselnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Unknown value on pdevselnn input\"");
//        end
//        if (INP.pdevselnn === 1'bz && CNTRL.pdevselnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Hi-Z value on pdevselnn input\"");
//        end
//        if (INP.pidsel === 1'bx && CNTRL.pidsel) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Unknown value on pidsel input\"");
//        end
//        if (INP.pidsel === 1'bz && CNTRL.pidsel) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Hi-Z value on pidsel input\"");
//        end
//        if (INP.pgntnn === 1'bx && CNTRL.pgntnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Unknown value on pgntnn input\"");
//        end
//        if (INP.pgntnn === 1'bz && CNTRL.pgntnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Hi-Z value on pgntnn input\"");
//        end
//        if (INP.pclkrunnn === 1'bx && CNTRL.pclkrunnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Unknown value on pclkrunnn input\"");
//        end
//        if (INP.pclkrunnn === 1'bz && CNTRL.pclkrunnn) begin
//          $display("WARNING at time %0t from %m",$time);
//          $display("     \"Hi-Z value on pclkrunnn input\"");
//        end
      end
    end 
  end
end // pclk_check;

// Performs all TIMING CHECKS and X-CHECKs for signal PRSTNN
always begin : prstnn_check
reg wait_for_0;
integer last_rising, last_falling;
  if (init_finished !== `true) begin
    wait (init_finished === `true);
  end
  if (model_flags.time_check !== `true && model_flags.x_check !== `true) begin

// Kill process if NOT USED in simulation
    wait(`false);
  end else begin
    @(INP.prstnn or CNTRL.prstnn); 
    wait_for_0 = `true;
    wait_for_0 <= #(0) `false;
    @(negedge wait_for_0);
    INP.prstnn_last_event = $time - INP.prstnn_event_time;
    INP.pad_last_event = $time - INP.pad_event_time;
    INP.pcxbenn_last_event = $time - INP.pcxbenn_event_time;
    INP.ppar_last_event = $time - INP.ppar_event_time;
    INP.pframenn_last_event = $time - INP.pframenn_event_time;
    INP.ptrdynn_last_event = $time - INP.ptrdynn_event_time;
    INP.pirdynn_last_event = $time - INP.pirdynn_event_time;
    INP.pstopnn_last_event = $time - INP.pstopnn_event_time;
    INP.pdevselnn_last_event = $time - INP.pdevselnn_event_time;
    INP.pidsel_last_event = $time - INP.pidsel_event_time;
    INP.preqnn_last_event = $time - INP.preqnn_event_time;
    INP.pgntnn_last_event = $time - INP.pgntnn_event_time;
    INP.pclk_last_event = $time - INP.pclk_event_time;
    INP.pclkrunnn_last_event = $time - INP.pclkrunnn_event_time;
    INP.prstnn_last_event = $time - INP.prstnn_event_time;
    INP.pd_last_event = $time - INP.pd_event_time;
    INP.pbenn_last_event = $time - INP.pbenn_event_time;
    INP.ppar64_last_event = $time - INP.ppar64_event_time;
    INP.preq64nn_last_event = $time - INP.preq64nn_event_time;
    INP.pack64nn_last_event = $time - INP.pack64nn_event_time;
    INP.plocknn_last_event = $time - INP.plocknn_event_time;
    INP.pperrnn_last_event = $time - INP.pperrnn_event_time;
    INP.pserrnn_last_event = $time - INP.pserrnn_event_time;
    INP.psbonn_last_event = $time - INP.psbonn_event_time;
    INP.psdone_last_event = $time - INP.psdone_event_time;
    if ($time > 1 && CNTRL.prstnn && INP.prstnn_last_event <= (2*`time_unit)) begin 
      if (model_flags.time_check) begin
        if (INP.prstnn === 1'b1) begin

// Check cycle, pulse width low, and rising edge setup times
          if (last_rising > 0 && $time - last_rising < model_times.tcy_min_prstnn && CNTRL.ck_prstnn) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Cycle period is too short on pin prstnn\"");
          end
          if (last_rising > 0 && model_times.tcy_max_prstnn != 0 &&
              $time - last_rising > model_times.tcy_max_prstnn && CNTRL.ck_prstnn) begin
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Cycle period is too long on pin prstnn\"");
          end
          if (last_falling > 0 && $time - last_falling < model_times.tpwl_min_prstnn && CNTRL.ck_prstnn) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width low period is too short on pin prstnn\"");
          end
          if (last_falling > 0 && model_times.tpwl_max_prstnn != 0 &&
              $time - last_falling > model_times.tpwl_max_prstnn && CNTRL.ck_prstnn) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width low period is too long on pin prstnn\"");
          end
          last_rising = $time;
        end else if (INP.prstnn === 1'b0) begin

// Check pulse width high, and falling edge setup times
          if (last_rising > 0 && $time - last_rising < model_times.tpwh_min_prstnn && CNTRL.ck_prstnn) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width high period is too short on pin prstnn\"");
          end
          if (last_rising > 0 && model_times.tpwh_max_prstnn != 0 &&
              $time - last_rising > model_times.tpwh_max_prstnn && CNTRL.ck_prstnn) begin 
            $display("WARNING at time %0t from %m",$time);
            $display("     \"Pulse width high period is too long on pin prstnn\"");
          end
Next12345678910
HierarchyFilesModulesSignalsTasksFunctionsHelp

This page: Created:Thu Aug 19 11:56:55 1999
From: ../../../sparc_v8/system/lmc/rtl/pcimaster_fm.v

Verilog converted to html by v2html 5.0 (written by Costas Calamvokis).Help