Merge branch 'master' of github.com:steveicarus/iverilog

This commit is contained in:
Stephen Williams 2015-12-20 16:31:15 -08:00
commit c88a60537a
13 changed files with 843 additions and 36 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998-2010 Stephen Williams (steve@icarus.com)
* Copyright (c) 1998-2015 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -32,6 +32,7 @@ Module::Module(LexicalScope*parent, perm_string n)
{
library_flag = false;
is_cell = false;
is_interface = false;
program_block = false;
uc_drive = UCD_NONE;
timescale_warn_done = false;

View File

@ -1,3 +1,613 @@
// These are correct and are used to find the base (zero) pin.
thisSubtraction:netlist.h:4976
thisSubtraction:netlist.h:4985
thisSubtraction:netlist.h:4991
thisSubtraction:netlist.h:5000
// These are the functions that the compiler exports to the targets.
//ivl_branch_island()
unusedFunction:t-dll-api.cc:38
//ivl_branch_terminal()
unusedFunction:t-dll-api.cc:43
//ivl_const_bits()
unusedFunction:t-dll-api.cc:180
//ivl_const_delay()
unusedFunction:t-dll-api.cc:198
//ivl_const_file()
unusedFunction:t-dll-api.cc:204
//ivl_const_lineno()
unusedFunction:t-dll-api.cc:210
//ivl_const_nex()
unusedFunction:t-dll-api.cc:216
//ivl_const_real()
unusedFunction:t-dll-api.cc:222
//ivl_const_scope()
unusedFunction:t-dll-api.cc:229
//ivl_const_signed()
unusedFunction:t-dll-api.cc:235
//ivl_const_type()
unusedFunction:t-dll-api.cc:174
//ivl_const_width()
unusedFunction:t-dll-api.cc:241
//ivl_design_const()
unusedFunction:t-dll-api.cc:116
//ivl_design_consts()
unusedFunction:t-dll-api.cc:111
//ivl_design_delay_sel()
unusedFunction:t-dll-api.cc:49
//ivl_design_discipline()
unusedFunction:t-dll-api.cc:128
//ivl_design_disciplines()
unusedFunction:t-dll-api.cc:122
//ivl_design_flag()
unusedFunction:t-dll-api.cc:54
//ivl_design_process()
unusedFunction:t-dll-api.cc:59
//ivl_design_root()
unusedFunction:t-dll-api.cc:72
//ivl_design_roots()
unusedFunction:t-dll-api.cc:81
//ivl_design_time_precision()
unusedFunction:t-dll-api.cc:106
//ivl_discipline_domain()
unusedFunction:t-dll-api.cc:135
//ivl_discipline_flow()
unusedFunction:t-dll-api.cc:140
//ivl_discipline_name()
unusedFunction:t-dll-api.cc:145
//ivl_discipline_potential()
unusedFunction:t-dll-api.cc:150
//ivl_enum_bits()
unusedFunction:t-dll-api.cc:260
//ivl_enum_file()
unusedFunction:t-dll-api.cc:285
//ivl_enum_lineno()
unusedFunction:t-dll-api.cc:291
//ivl_enum_name()
unusedFunction:t-dll-api.cc:253
//ivl_enum_names()
unusedFunction:t-dll-api.cc:247
//ivl_enum_signed()
unusedFunction:t-dll-api.cc:279
//ivl_enum_type()
unusedFunction:t-dll-api.cc:267
//ivl_enum_width()
unusedFunction:t-dll-api.cc:273
//ivl_event_any()
unusedFunction:t-dll-api.cc:349
//ivl_event_file()
unusedFunction:t-dll-api.cc:326
//ivl_event_lineno()
unusedFunction:t-dll-api.cc:332
//ivl_event_name()
unusedFunction:t-dll-api.cc:297
//ivl_event_nany()
unusedFunction:t-dll-api.cc:343
//ivl_event_neg()
unusedFunction:t-dll-api.cc:362
//ivl_event_nneg()
unusedFunction:t-dll-api.cc:356
//ivl_event_npos()
unusedFunction:t-dll-api.cc:369
//ivl_event_pos()
unusedFunction:t-dll-api.cc:375
//ivl_event_scope()
unusedFunction:t-dll-api.cc:338
//ivl_expr_bits()
unusedFunction:t-dll-api.cc:382
//ivl_expr_branch()
unusedFunction:t-dll-api.cc:388
//ivl_expr_def()
unusedFunction:t-dll-api.cc:394
//ivl_expr_delay_val()
unusedFunction:t-dll-api.cc:410
//ivl_expr_dvalue()
unusedFunction:t-dll-api.cc:416
//ivl_expr_enumtype()
unusedFunction:t-dll-api.cc:422
//ivl_expr_event()
unusedFunction:t-dll-api.cc:628
//ivl_expr_file()
unusedFunction:t-dll-api.cc:162
//ivl_expr_lineno()
unusedFunction:t-dll-api.cc:168
//ivl_expr_name()
unusedFunction:t-dll-api.cc:433
//ivl_expr_nature()
unusedFunction:t-dll-api.cc:456
//ivl_expr_net_type()
unusedFunction:t-dll-api.cc:428
//ivl_expr_opcode()
unusedFunction:t-dll-api.cc:462
//ivl_expr_oper1()
unusedFunction:t-dll-api.cc:478
//ivl_expr_oper2()
unusedFunction:t-dll-api.cc:516
//ivl_expr_oper3()
unusedFunction:t-dll-api.cc:542
//ivl_expr_parameter()
unusedFunction:t-dll-api.cc:556
//ivl_expr_parm()
unusedFunction:t-dll-api.cc:571
//ivl_expr_parms()
unusedFunction:t-dll-api.cc:598
//ivl_expr_repeat()
unusedFunction:t-dll-api.cc:621
//ivl_expr_scope()
unusedFunction:t-dll-api.cc:642
//ivl_expr_sel_type()
unusedFunction:t-dll-api.cc:649
//ivl_expr_signed()
unusedFunction:t-dll-api.cc:674
//ivl_expr_sized()
unusedFunction:t-dll-api.cc:680
//ivl_expr_string()
unusedFunction:t-dll-api.cc:686
//ivl_expr_type()
unusedFunction:t-dll-api.cc:155
//ivl_expr_uvalue()
unusedFunction:t-dll-api.cc:692
//ivl_expr_value()
unusedFunction:t-dll-api.cc:717
//ivl_expr_width()
unusedFunction:t-dll-api.cc:723
//ivl_file_table_index()
unusedFunction:t-dll-api.cc:765
//ivl_file_table_item()
unusedFunction:t-dll-api.cc:755
//ivl_file_table_size()
unusedFunction:t-dll-api.cc:783
//ivl_island_flag_set()
unusedFunction:t-dll-api.cc:792
//ivl_island_flag_test()
unusedFunction:t-dll-api.cc:806
//ivl_logic_attr()
unusedFunction:t-dll-api.cc:832
//ivl_logic_attr_cnt()
unusedFunction:t-dll-api.cc:848
//ivl_logic_attr_val()
unusedFunction:t-dll-api.cc:853
//ivl_logic_basename()
unusedFunction:t-dll-api.cc:901
//ivl_logic_delay()
unusedFunction:t-dll-api.cc:936
//ivl_logic_drive0()
unusedFunction:t-dll-api.cc:860
//ivl_logic_drive1()
unusedFunction:t-dll-api.cc:877
//ivl_logic_file()
unusedFunction:t-dll-api.cc:814
//ivl_logic_is_cassign()
unusedFunction:t-dll-api.cc:826
//ivl_logic_lineno()
unusedFunction:t-dll-api.cc:820
//ivl_logic_name()
unusedFunction:t-dll-api.cc:894
//ivl_logic_pins()
unusedFunction:t-dll-api.cc:918
//ivl_logic_scope()
unusedFunction:t-dll-api.cc:907
//ivl_logic_type()
unusedFunction:t-dll-api.cc:913
//ivl_logic_udp()
unusedFunction:t-dll-api.cc:929
//ivl_logic_width()
unusedFunction:t-dll-api.cc:942
//ivl_lpm_array()
unusedFunction:t-dll-api.cc:1059
//ivl_lpm_aset_value()
unusedFunction:t-dll-api.cc:1110
//ivl_lpm_async_clr()
unusedFunction:t-dll-api.cc:1005
//ivl_lpm_async_set()
unusedFunction:t-dll-api.cc:1035
//ivl_lpm_base()
unusedFunction:t-dll-api.cc:1071
//ivl_lpm_basename()
unusedFunction:t-dll-api.cc:1000
//ivl_lpm_clk()
unusedFunction:t-dll-api.cc:1098
//ivl_lpm_data()
unusedFunction:t-dll-api.cc:1167
//ivl_lpm_datab()
unusedFunction:t-dll-api.cc:1264
//ivl_lpm_define()
unusedFunction:t-dll-api.cc:1133
//ivl_lpm_delay()
unusedFunction:t-dll-api.cc:1029
//ivl_lpm_drive0()
unusedFunction:t-dll-api.cc:1393
//ivl_lpm_drive1()
unusedFunction:t-dll-api.cc:1410
//ivl_lpm_enable()
unusedFunction:t-dll-api.cc:1145
//ivl_lpm_file()
unusedFunction:t-dll-api.cc:1157
//ivl_lpm_lineno()
unusedFunction:t-dll-api.cc:1162
//ivl_lpm_name()
unusedFunction:t-dll-api.cc:1298
//ivl_lpm_negedge()
unusedFunction:t-dll-api.cc:1086
//ivl_lpm_select()
unusedFunction:t-dll-api.cc:1433
//ivl_lpm_selects()
unusedFunction:t-dll-api.cc:1449
//ivl_lpm_signed()
unusedFunction:t-dll-api.cc:1466
//ivl_lpm_size()
unusedFunction:t-dll-api.cc:1525
//ivl_lpm_sset_value()
unusedFunction:t-dll-api.cc:1121
//ivl_lpm_string()
unusedFunction:t-dll-api.cc:1577
//ivl_lpm_sync_clr()
unusedFunction:t-dll-api.cc:1017
//ivl_lpm_sync_set()
unusedFunction:t-dll-api.cc:1047
//ivl_lpm_trigger()
unusedFunction:t-dll-api.cc:1594
//ivl_lpm_type()
unusedFunction:t-dll-api.cc:1583
//ivl_lpm_width()
unusedFunction:t-dll-api.cc:1588
//ivl_lval_idx()
unusedFunction:t-dll-api.cc:1616
//ivl_lval_mux()
unusedFunction:t-dll-api.cc:1611
//ivl_lval_nest()
unusedFunction:t-dll-api.cc:1661
//ivl_lval_part_off()
unusedFunction:t-dll-api.cc:1625
//ivl_lval_property_idx()
unusedFunction:t-dll-api.cc:1643
//ivl_lval_sel_type()
unusedFunction:t-dll-api.cc:1631
//ivl_lval_sig()
unusedFunction:t-dll-api.cc:1649
//ivl_nature_name()
unusedFunction:t-dll-api.cc:1670
//ivl_nexus_get_private()
unusedFunction:t-dll-api.cc:1690
//ivl_nexus_name()
unusedFunction:t-dll-api.cc:1679
//ivl_nexus_ptr_branch()
unusedFunction:t-dll-api.cc:1733
//ivl_nexus_ptr_con()
unusedFunction:t-dll-api.cc:1742
//ivl_nexus_ptr_sig()
unusedFunction:t-dll-api.cc:1769
//ivl_nexus_ptr_switch()
unusedFunction:t-dll-api.cc:1778
//ivl_nexus_set_private()
unusedFunction:t-dll-api.cc:1696
//ivl_parameter_basename()
unusedFunction:t-dll-api.cc:1787
//ivl_parameter_expr()
unusedFunction:t-dll-api.cc:1830
//ivl_parameter_file()
unusedFunction:t-dll-api.cc:1836
//ivl_parameter_lineno()
unusedFunction:t-dll-api.cc:1842
//ivl_parameter_local()
unusedFunction:t-dll-api.cc:1793
//ivl_parameter_lsb()
unusedFunction:t-dll-api.cc:1811
//ivl_parameter_msb()
unusedFunction:t-dll-api.cc:1805
//ivl_parameter_scope()
unusedFunction:t-dll-api.cc:1848
//ivl_parameter_signed()
unusedFunction:t-dll-api.cc:1799
//ivl_parameter_width()
unusedFunction:t-dll-api.cc:1821
//ivl_path_condit()
unusedFunction:t-dll-api.cc:1854
//ivl_path_delay()
unusedFunction:t-dll-api.cc:1866
//ivl_path_is_condit()
unusedFunction:t-dll-api.cc:1860
//ivl_path_scope()
unusedFunction:t-dll-api.cc:1872
//ivl_path_source()
unusedFunction:t-dll-api.cc:1879
//ivl_path_source_negedge()
unusedFunction:t-dll-api.cc:1889
//ivl_path_source_posedge()
unusedFunction:t-dll-api.cc:1884
//ivl_process_analog()
unusedFunction:t-dll-api.cc:1911
//ivl_process_attr_cnt()
unusedFunction:t-dll-api.cc:1926
//ivl_process_attr_val()
unusedFunction:t-dll-api.cc:1931
//ivl_process_file()
unusedFunction:t-dll-api.cc:1894
//ivl_process_lineno()
unusedFunction:t-dll-api.cc:1900
//ivl_process_scope()
unusedFunction:t-dll-api.cc:1916
//ivl_process_stmt()
unusedFunction:t-dll-api.cc:1921
//ivl_process_type()
unusedFunction:t-dll-api.cc:1906
//ivl_scope_attr_cnt()
unusedFunction:t-dll-api.cc:1938
//ivl_scope_attr_val()
unusedFunction:t-dll-api.cc:1944
//ivl_scope_basename()
unusedFunction:t-dll-api.cc:1951
//ivl_scope_child()
unusedFunction:t-dll-api.cc:1978
//ivl_scope_children()
unusedFunction:t-dll-api.cc:1958
//ivl_scope_childs()
unusedFunction:t-dll-api.cc:1972
//ivl_scope_class()
unusedFunction:t-dll-api.cc:1984
//ivl_scope_classes()
unusedFunction:t-dll-api.cc:1990
//ivl_scope_def()
unusedFunction:t-dll-api.cc:1996
//ivl_scope_def_file()
unusedFunction:t-dll-api.cc:2002
//ivl_scope_def_lineno()
unusedFunction:t-dll-api.cc:2008
//ivl_scope_enumerate()
unusedFunction:t-dll-api.cc:2020
//ivl_scope_enumerates()
unusedFunction:t-dll-api.cc:2014
//ivl_scope_event()
unusedFunction:t-dll-api.cc:2033
//ivl_scope_events()
unusedFunction:t-dll-api.cc:2027
//ivl_scope_file()
unusedFunction:t-dll-api.cc:2040
//ivl_scope_is_auto()
unusedFunction:t-dll-api.cc:2046
//ivl_scope_is_cell()
unusedFunction:t-dll-api.cc:2052
//ivl_scope_lineno()
unusedFunction:t-dll-api.cc:2058
//ivl_scope_log()
unusedFunction:t-dll-api.cc:2070
//ivl_scope_logs()
unusedFunction:t-dll-api.cc:2064
//ivl_scope_lpm()
unusedFunction:t-dll-api.cc:2083
//ivl_scope_lpms()
unusedFunction:t-dll-api.cc:2077
//ivl_scope_mod_module_port_name()
unusedFunction:t-dll-api.cc:2160
//ivl_scope_mod_module_port_type()
unusedFunction:t-dll-api.cc:2169
//ivl_scope_mod_module_port_width()
unusedFunction:t-dll-api.cc:2180
//ivl_scope_mod_module_ports()
unusedFunction:t-dll-api.cc:2153
//ivl_scope_mod_port()
unusedFunction:t-dll-api.cc:2204
//ivl_scope_param()
unusedFunction:t-dll-api.cc:2139
//ivl_scope_params()
unusedFunction:t-dll-api.cc:2133
//ivl_scope_parent()
unusedFunction:t-dll-api.cc:2146
//ivl_scope_port()
unusedFunction:t-dll-api.cc:2195
//ivl_scope_ports()
unusedFunction:t-dll-api.cc:2186
//ivl_scope_sig()
unusedFunction:t-dll-api.cc:2218
//ivl_scope_sigs()
unusedFunction:t-dll-api.cc:2212
//ivl_scope_switch()
unusedFunction:t-dll-api.cc:2231
//ivl_scope_switches()
unusedFunction:t-dll-api.cc:2225
//ivl_scope_time_precision()
unusedFunction:t-dll-api.cc:2238
//ivl_scope_time_units()
unusedFunction:t-dll-api.cc:2244
//ivl_scope_tname()
unusedFunction:t-dll-api.cc:2256
//ivl_scope_type()
unusedFunction:t-dll-api.cc:2250
//ivl_signal_array_addr_swapped()
unusedFunction:t-dll-api.cc:2272
//ivl_signal_array_base()
unusedFunction:t-dll-api.cc:2262
//ivl_signal_array_count()
unusedFunction:t-dll-api.cc:2267
//ivl_signal_attr()
unusedFunction:t-dll-api.cc:2287
//ivl_signal_attr_cnt()
unusedFunction:t-dll-api.cc:2302
//ivl_signal_attr_val()
unusedFunction:t-dll-api.cc:2307
//ivl_signal_basename()
unusedFunction:t-dll-api.cc:2313
//ivl_signal_data_type()
unusedFunction:t-dll-api.cc:2447
//ivl_signal_dimensions()
unusedFunction:t-dll-api.cc:2277
//ivl_signal_discipline()
unusedFunction:t-dll-api.cc:2282
//ivl_signal_file()
unusedFunction:t-dll-api.cc:2425
//ivl_signal_forced_net()
unusedFunction:t-dll-api.cc:2420
//ivl_signal_integer()
unusedFunction:t-dll-api.cc:2437
//ivl_signal_lineno()
unusedFunction:t-dll-api.cc:2431
//ivl_signal_local()
unusedFunction:t-dll-api.cc:2410
//ivl_signal_lsb()
unusedFunction:t-dll-api.cc:2380
//ivl_signal_module_port_index()
unusedFunction:t-dll-api.cc:2405
//ivl_signal_msb()
unusedFunction:t-dll-api.cc:2371
//ivl_signal_name()
unusedFunction:t-dll-api.cc:2318
//ivl_signal_nex()
unusedFunction:t-dll-api.cc:2338
//ivl_signal_npath()
unusedFunction:t-dll-api.cc:2457
//ivl_signal_packed_dimensions()
unusedFunction:t-dll-api.cc:2354
//ivl_signal_packed_lsb()
unusedFunction:t-dll-api.cc:2365
//ivl_signal_packed_msb()
unusedFunction:t-dll-api.cc:2359
//ivl_signal_path()
unusedFunction:t-dll-api.cc:2462
//ivl_signal_port()
unusedFunction:t-dll-api.cc:2400
//ivl_signal_scope()
unusedFunction:t-dll-api.cc:2389
//ivl_signal_signed()
unusedFunction:t-dll-api.cc:2415
//ivl_signal_width()
unusedFunction:t-dll-api.cc:2395
//ivl_statement_type()
unusedFunction:t-dll-api.cc:2473
//ivl_stmt_block_count()
unusedFunction:t-dll-api.cc:2502
//ivl_stmt_block_scope()
unusedFunction:t-dll-api.cc:2488
//ivl_stmt_block_stmt()
unusedFunction:t-dll-api.cc:2516
//ivl_stmt_call()
unusedFunction:t-dll-api.cc:2531
//ivl_stmt_case_count()
unusedFunction:t-dll-api.cc:2551
//ivl_stmt_case_expr()
unusedFunction:t-dll-api.cc:2565
//ivl_stmt_case_stmt()
unusedFunction:t-dll-api.cc:2581
//ivl_stmt_cond_expr()
unusedFunction:t-dll-api.cc:2597
//ivl_stmt_cond_false()
unusedFunction:t-dll-api.cc:2623
//ivl_stmt_cond_true()
unusedFunction:t-dll-api.cc:2632
//ivl_stmt_delay_expr()
unusedFunction:t-dll-api.cc:2641
//ivl_stmt_delay_val()
unusedFunction:t-dll-api.cc:2657
//ivl_stmt_events()
unusedFunction:t-dll-api.cc:2681
//ivl_stmt_file()
unusedFunction:t-dll-api.cc:2478
//ivl_stmt_lexp()
unusedFunction:t-dll-api.cc:2708
//ivl_stmt_lineno()
unusedFunction:t-dll-api.cc:2483
//ivl_stmt_lval()
unusedFunction:t-dll-api.cc:2719
//ivl_stmt_lvals()
unusedFunction:t-dll-api.cc:2737
//ivl_stmt_lwidth()
unusedFunction:t-dll-api.cc:2754
//ivl_stmt_name()
unusedFunction:t-dll-api.cc:2786
//ivl_stmt_nevent()
unusedFunction:t-dll-api.cc:2663
//ivl_stmt_opcode()
unusedFunction:t-dll-api.cc:2798
//ivl_stmt_parm()
unusedFunction:t-dll-api.cc:2809
//ivl_stmt_parm_count()
unusedFunction:t-dll-api.cc:2822
//ivl_stmt_rval()
unusedFunction:t-dll-api.cc:2833
//ivl_stmt_sfunc_as_task()
unusedFunction:t-dll-api.cc:2850
//ivl_stmt_sub_stmt()
unusedFunction:t-dll-api.cc:2862
//ivl_switch_a()
unusedFunction:t-dll-api.cc:2899
//ivl_switch_b()
unusedFunction:t-dll-api.cc:2904
//ivl_switch_basename()
unusedFunction:t-dll-api.cc:2884
//ivl_switch_delay()
unusedFunction:t-dll-api.cc:2929
//ivl_switch_enable()
unusedFunction:t-dll-api.cc:2909
//ivl_switch_file()
unusedFunction:t-dll-api.cc:2935
//ivl_switch_island()
unusedFunction:t-dll-api.cc:2940
//ivl_switch_lineno()
unusedFunction:t-dll-api.cc:2945
//ivl_switch_offset()
unusedFunction:t-dll-api.cc:2924
//ivl_switch_part()
unusedFunction:t-dll-api.cc:2919
//ivl_switch_scope()
unusedFunction:t-dll-api.cc:2889
//ivl_switch_type()
unusedFunction:t-dll-api.cc:2894
//ivl_switch_width()
unusedFunction:t-dll-api.cc:2914
//ivl_type_base()
unusedFunction:t-dll-api.cc:2950
//ivl_type_element()
unusedFunction:t-dll-api.cc:2956
//ivl_type_name()
unusedFunction:t-dll-api.cc:2985
//ivl_type_packed_dimensions()
unusedFunction:t-dll-api.cc:2965
//ivl_type_packed_lsb()
unusedFunction:t-dll-api.cc:2971
//ivl_type_packed_msb()
unusedFunction:t-dll-api.cc:2978
//ivl_type_prop_type()
unusedFunction:t-dll-api.cc:3011
//ivl_type_properties()
unusedFunction:t-dll-api.cc:2994
//ivl_type_signed()
unusedFunction:t-dll-api.cc:3019
//ivl_udp_file()
unusedFunction:t-dll-api.cc:990
//ivl_udp_init()
unusedFunction:t-dll-api.cc:958
//ivl_udp_lineno()
unusedFunction:t-dll-api.cc:995
//ivl_udp_name()
unusedFunction:t-dll-api.cc:984
//ivl_udp_nin()
unusedFunction:t-dll-api.cc:953
//ivl_udp_port()
unusedFunction:t-dll-api.cc:963
//ivl_udp_row()
unusedFunction:t-dll-api.cc:971
//ivl_udp_rows()
unusedFunction:t-dll-api.cc:979
// ivl_udp_sequ()
unusedFunction:t-dll-api.cc:948

View File

@ -1277,7 +1277,6 @@ unsigned PECallFunction::test_width_method_(Design*des, NetScope*scope,
return 0;
perm_string member_name;
ivl_type_t member_type = 0;
pform_name_t use_path = path_;
perm_string method_name = peek_tail_name(use_path);
use_path.pop_back();
@ -1317,11 +1316,8 @@ unsigned PECallFunction::test_width_method_(Design*des, NetScope*scope,
const netclass_t* class_type = net->class_type();
int midx = class_type->property_idx_from_name(member_name);
if (midx >= 0)
member_type = class_type->get_prop_type(midx);
else
member_type = 0;
use_path = tmp_path;
ivl_type_t member_type = 0;
if (midx >= 0) member_type = class_type->get_prop_type(midx);
use_darray = dynamic_cast<const netdarray_t*> (member_type);
@ -1410,7 +1406,7 @@ NetExpr*PECallFunction::cast_to_width_(NetExpr*expr, unsigned wid) const
if (debug_elaborate) {
cerr << get_fileline() << ": PECallFunction::cast_to_width_: "
<< "cast to " << wid
<< " bits " << (signed_flag_?"signed":"unsigned")
<< " bits " << (signed_flag_ ? "signed" : "unsigned")
<< " from expr_width()=" << expr->expr_width() << endl;
}
@ -1535,7 +1531,7 @@ NetExpr* PECallFunction::elaborate_sfunc_(Design*des, NetScope*scope,
PExpr*expr = parms_[0];
verinum val (expr->has_sign()? verinum::V1 : verinum::V0, 1);
verinum val (expr->has_sign() ? verinum::V1 : verinum::V0, 1);
NetEConst*sub = new NetEConst(val);
sub->set_line(*this);
@ -2017,7 +2013,7 @@ static NetExpr* check_for_struct_members(const LineInfo*li,
}
NetESignal*sig = new NetESignal(net);
NetExpr *base = packed_base? packed_base : make_const_val(off);
NetExpr *base = packed_base ? packed_base : make_const_val(off);
if (debug_elaborate) {
cerr << li->get_fileline() << ": debug: check_for_struct_members: "
@ -2681,7 +2677,7 @@ unsigned PEConcat::test_width(Design*des, NetScope*scope, width_mode_t&)
expr_is_string = NO;
}
expr_type_ = (expr_is_string==YES)? IVL_VT_STRING : IVL_VT_LOGIC;
expr_type_ = (expr_is_string==YES) ? IVL_VT_STRING : IVL_VT_LOGIC;
signed_flag_ = false;
// If there is a repeat expression, then evaluate the constant
@ -3035,7 +3031,7 @@ bool PEIdent::calculate_up_do_width_(Design*des, NetScope*scope,
NetExpr*wid_ex = elab_and_eval(des, scope, index_tail.lsb, -1, true);
NetEConst*wid_c = dynamic_cast<NetEConst*>(wid_ex);
wid = wid_c? wid_c->value().as_ulong() : 0;
wid = wid_c ? wid_c->value().as_ulong() : 0;
if (wid == 0) {
cerr << index_tail.lsb->get_fileline() << ": error: "
"Indexed part widths must be constant and greater than zero."
@ -3184,7 +3180,7 @@ unsigned PEIdent::test_width(Design*des, NetScope*scope, width_mode_t&mode)
bool parts_defined;
calculate_parts_(des, scope, msb, lsb, parts_defined);
if (parts_defined)
use_width = 1 + ((msb>lsb)? (msb-lsb) : (lsb-msb));
use_width = 1 + ((msb>lsb) ? (msb-lsb) : (lsb-msb));
else
use_width = UINT_MAX;
break;
@ -3218,7 +3214,7 @@ unsigned PEIdent::test_width(Design*des, NetScope*scope, width_mode_t&mode)
ivl_assert(*this, 0);
}
if (const netdarray_t*darray = net? net->darray_type() : 0) {
if (const netdarray_t*darray = net ? net->darray_type() : 0) {
switch (use_sel) {
case index_component_t::SEL_BIT:
case index_component_t::SEL_BIT_LAST:
@ -3272,7 +3268,7 @@ unsigned PEIdent::test_width(Design*des, NetScope*scope, width_mode_t&mode)
<< net->name() << " is a net, "
<< "type=" << expr_type_
<< ", width=" << expr_width_
<< ", signed_=" << (signed_flag_?"true":"false")
<< ", signed_=" << (signed_flag_ ? "true" : "false")
<< ", use_depth=" << use_depth
<< ", packed_dimensions=" << net->packed_dimensions()
<< ", unpacked_dimensions=" << net->unpacked_dimensions()
@ -3936,7 +3932,7 @@ NetExpr* PEIdent::elaborate_expr(Design*des, NetScope*scope,
if ( !(SYS_TASK_ARG & flags) ) {
// I cannot interpret this identifier. Error message.
cerr << get_fileline() << ": error: Unable to bind "
<< (NEED_CONST & flags ? "parameter" : "wire/reg/memory")
<< ((NEED_CONST & flags) ? "parameter" : "wire/reg/memory")
<< " `" << path_ << "' in `" << scope_path(scope) << "'"
<< endl;
if (scope->need_const_func()) {
@ -5626,7 +5622,7 @@ NetEConst* PENumber::elaborate_expr(Design*, NetScope*,
unsigned PEString::test_width(Design*, NetScope*, width_mode_t&)
{
expr_type_ = IVL_VT_BOOL;
expr_width_ = text_? verinum(text_).len() : 0;
expr_width_ = text_ ? verinum(text_).len() : 0;
min_width_ = expr_width_;
signed_flag_ = false;

View File

@ -733,12 +733,18 @@ NetNet* NetEConcat::synthesize(Design*des, NetScope*scope, NetExpr*root)
}
}
if (flag == false) return 0;
if (flag == false) {
delete[]tmp;
return 0;
}
ivl_assert(*this, data_type != IVL_VT_NO_TYPE);
/* If this is a replication of zero just return 0. */
if (expr_width() == 0) return 0;
if (expr_width() == 0) {
delete[]tmp;
return 0;
}
/* Make a NetNet object to carry the output vector. */
perm_string path = scope->local_symbol();

View File

@ -76,7 +76,8 @@ distclean: clean
rm -f config.h stamp-config-h
cppcheck: $(O:.o=.c)
cppcheck --enable=all -f $(INCLUDE_PATH) $^
cppcheck --enable=all -f --suppressions-list=$(srcdir)/cppcheck.sup \
--relative-paths=$(srcdir) $(INCLUDE_PATH) $^
Makefile: $(srcdir)/Makefile.in
cd ..; ./config.status --file=libveriuser/$@

187
libveriuser/cppcheck.sup Normal file
View File

@ -0,0 +1,187 @@
// These are the functions that the runtime exports.
// The ACC functions.
// acc_close()
unusedFunction:a_close.c:23
// acc_compare_handles()
unusedFunction:a_compare_handles.c:23
// acc_configure()
unusedFunction:a_configure.c:25
// acc_fetch_argc()
unusedFunction:a_fetch_argc.c:27
// acc_fetch_argv()
unusedFunction:a_fetch_argv.c:27
// acc_fetch_defname()
unusedFunction:a_fetch_fullname.c:37
// acc_fetch_direction()
unusedFunction:a_fetch_dir.c:26
// acc_fetch_fulltype()
unusedFunction:a_fetch_type.c:66
// acc_fetch_itfarg()
unusedFunction:a_fetch_tfarg.c:27
// acc_fetch_location()
unusedFunction:a_fetch_location.c:23
// acc_fetch_name()
unusedFunction:a_fetch_fullname.c:32
// acc_fetch_paramtype()
unusedFunction:a_fetch_type_str.c:47
// acc_fetch_paramval()
unusedFunction:a_fetch_param.c:25
// acc_fetch_range()
unusedFunction:a_fetch_range.c:26
// acc_fetch_size()
unusedFunction:a_fetch_type.c:24
// acc_fetch_tfarg()
unusedFunction:a_fetch_tfarg.c:56
// acc_fetch_tfarg_int()
unusedFunction:a_fetch_tfarg.c:91
// acc_fetch_timescale_info()
unusedFunction:a_fetch_time.c:24
// acc_fetch_type()
unusedFunction:a_fetch_type.c:29
// acc_fetch_type_str()
unusedFunction:a_fetch_type_str.c:24
// acc_fetch_value()
unusedFunction:a_fetch_value.c:115
// acc_handle_by_name()
unusedFunction:a_handle_by_name.c:29
// acc_handle_hiconn()
unusedFunction:a_handle_hiconn.c:26
// acc_handle_object()
unusedFunction:a_handle_object.c:26
// acc_handle_parent()
unusedFunction:a_handle_parent.c:24
// acc_handle_scope()
unusedFunction:a_handle_parent.c:34
// acc_handle_simulated_net()
unusedFunction:a_handle_simulated_net.c:26
// acc_handle_tfarg()
unusedFunction:a_handle_tfarg.c:26
// acc_handle_tfinst()
unusedFunction:a_handle_tfarg.c:53
// acc_initialize()
unusedFunction:a_initialize.c:24
// acc_next_bit()
unusedFunction:a_next_bit.c:26
// acc_next_port()
unusedFunction:a_next_port.c:26
// acc_next_scope()
unusedFunction:a_next.c:86
// acc_next_topmod()
unusedFunction:a_next_topmod.c:30
// acc_product_version()
unusedFunction:a_product_version.c:23
// acc_set_scope()
unusedFunction:a_handle_object.c:40
// acc_set_value()
unusedFunction:a_set_value.c:27
// acc_vcl_add()
unusedFunction:a_vcl.c:157
// acc_vcl_delete()
unusedFunction:a_vcl.c:196
// acc_version()
unusedFunction:a_version.c:23
// These are the TF routines.
// io_printf()
unusedFunction:io_print.c:26
// mc_scan_plusargs()
unusedFunction:mc_scan_plusargs.c:27
// tf_asynchoff()
unusedFunction:asynch.c:34
// tf_asynchon()
unusedFunction:asynch.c:28
// tf_dofinish()
unusedFunction:finish.c:26
// tf_dostop()
unusedFunction:finish.c:32
// tf_error()
unusedFunction:io_print.c:45
// tf_exprinfo()
unusedFunction:exprinfo.c:26
// tf_getcstringp()
unusedFunction:getcstringp.c:26
// tf_getlongp()
unusedFunction:getlongp.c:29
// tf_getlongtime()
unusedFunction:getsimtime.c:112
// tf_getp()
unusedFunction:getp.c:73
// tf_getrealp()
unusedFunction:getp.c:120
// tf_gettime()
unusedFunction:getsimtime.c:77
// tf_getworkarea()
unusedFunction:workarea.c:62
// tf_igettimeprecision()
unusedFunction:getsimtime.c:198
// tf_igettimeunit()
unusedFunction:getsimtime.c:228
// tf_long_to_real()
unusedFunction:math.c:47
// tf_message()
unusedFunction:io_print.c:56
// tf_mipname()
unusedFunction:spname.c:47
// tf_multiply_long()
unusedFunction:math.c:27
// tf_nodeinfo()
unusedFunction:nodeinfo.c:27
// tf_nump()
unusedFunction:nump.c:42
// tf_putlongp()
unusedFunction:putlongp.c:28
// tf_putp()
unusedFunction:putp.c:88
// tf_putrealp()
unusedFunction:putp.c:137
// tf_real_to_long()
unusedFunction:math.c:40
// tf_rosynchronize()
unusedFunction:veriusertfs.c:391
// tf_scale_longdelay()
unusedFunction:getsimtime.c:136
// tf_scale_realdelay()
unusedFunction:getsimtime.c:161
// tf_setdelay()
unusedFunction:delay.c:75
// tf_setrealdelay()
unusedFunction:veriusertfs.c:426
// tf_setworkarea()
unusedFunction:workarea.c:36
// tf_spname()
unusedFunction:spname.c:25
// tf_strgetp()
unusedFunction:getp.c:177
// tf_strgettime()
unusedFunction:getsimtime.c:85
// tf_synchronize()
unusedFunction:veriusertfs.c:364
// tf_typep()
unusedFunction:typep.c:24
// tf_unscale_longdelay()
unusedFunction:getsimtime.c:144
// tf_unscale_realdelay()
unusedFunction:getsimtime.c:171
// tf_warning()
unusedFunction:io_print.c:34
// Non-standard TF routines the Icarus provides.
// tf_getlongsimtime()
unusedFunction:getsimtime.c:126
// veriusertfs_register_table()
unusedFunction:veriusertfs.c:76

View File

@ -162,13 +162,13 @@ verinum::V Nexus::driven_value() const
if ((sig->type() == NetNet::SUPPLY0) ||
(sig->type() == NetNet::TRI0)) {
// Multiple drivers are not currently supported.
ivl_assert(*obj, val == verinum::Vz);
ivl_assert(*sig, val == verinum::Vz);
val = verinum::V0;
}
if ((sig->type() == NetNet::SUPPLY1) ||
(sig->type() == NetNet::TRI1)) {
// Multiple drivers are not currently supported.
ivl_assert(*obj, val == verinum::Vz);
ivl_assert(*sig, val == verinum::Vz);
val = verinum::V1;
}
}
@ -222,13 +222,13 @@ verinum Nexus::driven_vector() const
if ((sig->type() == NetNet::SUPPLY0) ||
(sig->type() == NetNet::TRI0)) {
// Multiple drivers are not currently supported.
ivl_assert(*obj, val.len() == 0);
ivl_assert(*sig, val.len() == 0);
val = verinum(verinum::V0, width);
}
if ((sig->type() == NetNet::SUPPLY1) ||
(sig->type() == NetNet::TRI1)) {
// Multiple drivers are not currently supported.
ivl_assert(*obj, val.len() == 0);
ivl_assert(*sig, val.len() == 0);
val = verinum(verinum::V1, width);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000-2011 Stephen Williams (steve@icarus.com)
* Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -42,7 +42,9 @@ unsigned count_lval_width(const NetAssign_*idx)
NetAssign_::NetAssign_(NetAssign_*n)
: nest_(n), sig_(0), word_(0), base_(0), sel_type_(IVL_SEL_OTHER)
{
lwid_ = 0;
more = 0;
turn_sig_to_wire_on_release_ = false;
}
NetAssign_::NetAssign_(NetNet*s)

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000-2013 Stephen Williams (steve@icarus.com)
* Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -890,8 +890,8 @@ void Design::add_node(NetNode*net)
void Design::del_node(NetNode*net)
{
assert(net->design_ == this);
assert(net != 0);
assert(net->design_ == this);
/* Interact with the Design::functor method by manipulating the
cur and nxt pointers that it is using. */

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000-2014 Stephen Williams (steve@icarus.com)
* Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -188,6 +188,7 @@ NetForever::~NetForever()
NetForLoop::NetForLoop(NetNet*ind, NetExpr*iexpr, NetExpr*cond, NetProc*sub, NetProc*step)
: index_(ind), init_expr_(iexpr), condition_(cond), statement_(sub), step_statement_(step)
{
as_block_ = NULL;
}
void NetForLoop::wrap_up()

View File

@ -2777,7 +2777,9 @@ vector<pform_tf_port_t>*pform_make_task_ports(const struct vlltype&loc,
ret = do_make_task_ports(loc, pt, IVL_VT_CLASS, class_type, names);
}
ret = do_make_task_ports(loc, pt, IVL_VT_NO_TYPE, vtype, names);
if (! ret) {
ret = do_make_task_ports(loc, pt, IVL_VT_NO_TYPE, vtype, names);
}
if (unpacked_dims) {
for (list<perm_string>::iterator cur = names->begin()

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003-2012 Stephen Williams (steve@icarus.com)
* Copyright (c) 2003-2015 Stephen Williams (steve@icarus.com)
* Copyright CERN 2012 / Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
@ -66,6 +66,7 @@ static bool symbol_search(const LineInfo*li, Design*des, NetScope*scope,
bool prefix_scope = false;
bool recurse_flag = false;
assert(li);
ivl_assert(*li, ! path.empty());
name_component_t path_tail = path.back();
path.pop_back();
@ -94,7 +95,7 @@ static bool symbol_search(const LineInfo*li, Design*des, NetScope*scope,
scope = recurse.scope;
prefix_scope = true;
if (scope->is_auto() && li) {
if (scope->is_auto()) {
cerr << li->get_fileline() << ": error: Hierarchical "
"reference to automatically allocated item "
"`" << path_tail.name << "' in path `" << path << "'" << endl;

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2009 Stephen Williams (steve@icarus.com)
* Copyright (c) 2009-2015 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -29,10 +29,10 @@ static void run_string(const char*txt)
if (cp[0] == '%' && cp[1] != 0) {
switch (cp[1]) {
case 'M':
fprintf(stdout, "%u", VERSION_MAJOR);
fprintf(stdout, "%d", VERSION_MAJOR);
break;
case 'n':
fprintf(stdout, "%u", VERSION_MINOR);
fprintf(stdout, "%d", VERSION_MINOR);
break;
case 'E':
fprintf(stdout, "%s", VERSION_EXTRA);