summaryrefslogtreecommitdiff
path: root/translate/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'translate/TODO')
-rw-r--r--translate/TODO342
1 files changed, 0 insertions, 342 deletions
diff --git a/translate/TODO b/translate/TODO
deleted file mode 100644
index c2da8aa..0000000
--- a/translate/TODO
+++ /dev/null
@@ -1,342 +0,0 @@
-BUGS:
-* GCC 4.0.1
-* bug may25 rob chapman (interface).
-* bug jun14 peter TB brett (unconstr out assigned with (others => x))
-* bug stephen leak
-* bug elab of pr/warnings-0/conf1.vhdl (unconstrained signals)
-* bug ~/conf2.vhdl: arch subprogram is not translated for config (check with
- ghdl1-debug).
-* bug ~/conf3.vhdl: problem while counting signals.
-* from a typical vhdl file, create new files with 1 or more tokens removed.
- Check diags.
-* bug IR2069
-* bug unconstrained port and func conv: see IR2064
-* bug david-kuehling with signals (array_subtype_ptr)
-* translate_object: no parent.
-* waves: verilog types, physical types.
-* waves: ghwdump util to be put into ghdl exec ?
-* grt: --dump-rti, --dump-signals: modules?
-todo: web site: add ghdl.ps, ghdl.pdf
-
-PEFS:
-* DONE: add an hash table for primary unit (cf unisim).
-* use hash table for get_lastest_arch
-* DONE: ieee_xxx_resolv for ghdl_run
-
-* TOP:
-* vhdl93
-* DONE: new node format
-* DONE: grt: do not depends on libgnat [malloc/free; gnat.table; rcheck; stdio]
-* sem_name: check all possibilities, recursion on prefix for finish_ and free.
-
-* length : use left and right from type range if any.
-* subtype descriptor : can be a const.
-* checks on type (values out of bounds).
-* deallocate: in depth.
-* iterator on array elements.
-
-* GHDL:
-* DONE: val_staticness for aggregates
-* libraries: the first line of the .cf files must contains options/standard.
-* global file for setup (vhdl version, mapping)
-* eval static expressions automaticaly.
-* check for no return in a function, generate code to catch this error.
-* DONE: detect no wait in processes.
-* clean-up dependences check (cf libraries.is_obsolete)
-* AMS-VHDL: reserved keywords
-* replace implicit_functions of type decl with implicit_subprograms
-* add an option to disable eval_if_static_expr (to check more).
-* handle "-- pragma xxx"
-* handle locally static disconnection_spec in canon
-* use MD5/SHA1 instead of dates
-* add_dependence: add a flag to mark dependence (to be restored/backuped)
-* visible_flag: check for operator
-* individual assocs: multi-dim arrays
-* static name: if the value is an access, the name is not static.
-* DONE: preference for universal primitives (function call).
-* check rules for building default sensitivity list.
-* overload in case/select signal assignment
-* array access subtype.
-* DONE: triple use clauses
-* DONE: use clauses (list)
-* visibility in configuration declaration.
-* DONE: hide implicit defined subprograms when overridden by explicit one.
-* DONE: script to do all checks from a tar file
-* DONE: sem_name -> sem_scopes
-* DONE: sem_names.ads/adb
-* DONE: eval string literal (add list)
-* DONE: export files for GCC, build in GCC.
-* DONE: name visibility
-* DONE: create iir_kind_error
-* DONE: add base_name field for _name iirs.
-* DONE: check accesses with base_name.
-* attributes: check all entity name kind (labels, file...)
-* DONE: attributes: only one per simple name.
-* incremental binding: different entity in entity aspect of primary binding.
-* DONE: overload number in IIRS.
-* subprogram_instances: remove decl_type (only use ptr_type).
-* pure during elab: load package only if necessary.
-* purity state of implicit subprograms.
-* seen_flag: remove (unused).
-* DONE: location_end: add for design units.
-* 'image, 'value: eval_static_expr, to be completed.
-
-* IIRS:
-* formats: Declaration, Integer, Real, Small, Medium
-* + lists
-* common: kind/flags/staticness/digits (32), loc(32)
- 4 fields (4 * 32) + back_end (??) + parent (??)
-* Integer: + int (64) (?? for physicals: origin,unit,type)
-* real: + real (64)
-* small: + 2 fields (2 * 32)
-* medium: + 2 + 7 fields (9 * 32)
-* Decls: + link (32), ident (32), attr (32), parent (32),
- 1+2+4 fields (7 * 32) + second link (?)
-
-* ghdlmake:
-* DONE: add object files from grt
-* selection of run time?
-* DONE: object files location (fix how std is currently handled).
-* verbose or long flag for -d: disp file name
-* handle multiple libraries
-* -n: do not compile/elaborate.
-* DONE: -cargs: additional args for compiler (+ -largs)
-* add dependences for all design units.
-* create or accept WAVES header for compilation order
-* -i: incremental analyse: analyse only if not up to date
-* -m: re-read library file before final elaboration, because dependences may
- have changed.
-* -m : to be renamed to -u
-* use default configurations for dependences
-* DONE: add other files
-* add these options: --AS=, --LD=, --POST=, -static, -shared
-* -m bugs: hc11core, fphdl
-* create configuration
-* DONE: chop
-
-* VITAL:
-* CELLTYPE
-* finish Level0
-* SDF 3.0, 4.0
-* SDF: bus, all types
-* negative delay
-
-* elaboration:
-* DONE: late binding
-* DONE: should load the top entity to check for no generics nor in ports.
-* DONE: should load package body to check passive subprg/no wait in subprg.
-* elab port based on assoc list
-* bug if instantiated entity is the same as the current instance ?
-
-* grt:
-* DONE: vcd: dump only when value has changed.
-* vcd: handle record
-* create vcd/tdml header
-* set fpu in exception mode
-* DONE: resize process stacks/trap stack underflow
-* create a global event list, to increase speed (each signal is an element of
- the list)
-* DONE: add name of processes (as an instance)
-
-* Optimizations:
-* DONE: reduce number of signals (components, instantiation...)
-* DONE: std_logic signals with only one driver.
-* range checks.
-
-* translate:
-* record/array file types
-* DONE: aggregate target for variables
-* DONE: create description of instance with an array instead of names
-* DONE: create names for prefix instead of uniq id
-* DONE: no type_desc for types that can't be used for signals (ex: types
- defined in subprg or processes).
-* do not create signals types for constant/variable, but always create value
- types.
-* rewrite procedure/function interfaces.
-* attribute names
-* do not translate all predefined subprograms: flag_use to be added
- be careful to packages and entity.
-* WRONG: do not add instance for pure functions -> maybe required for types.
-* free info
-* DONE: finalization (files)
-* DONE: extended identifiers
-* check for no return in a function (and catch at execution time)
-* range check: be smarter
-* range for for-loop, slices, generates.
-* flag_review: add more comments.
-* DONE: alias : handle more than arrays.
-* add a length field in array bounds for multi-dim array
-* DONE: create an elaborator for components
-* NOT RELEVANT: check for unused types infrastructures (_STB for array index)
-* create signal builder for record/array (see composite_types.vhdl)
-* DONE: handle package body while not necessary
-* individual assoc in subprograms
-* individual assoc for predefined proc (file procedures)
-* check for file with same basename (ex: a.vhd and a.tvhd), since the object
- file will overwrite (or add a number ex: 00_a.o 01_a.o)
-
-* ortho_gcc:
-* overflow
-* conversion
-
-* ortho:
-* DONE: check for use of variable out of its scope (add a in_use flag ?).
-* -> check for no enode after a statement.
-* standard types metrics.
-* DONE: check scope for variables/constant/subprograms.
-* enum -> new_lit
-* for debug: disp/read enum size.
-* new_ref -> from variable/interface/const to l_node
-* offset type
-* debug: check ident (redefine, overridden)
-
-* tests
-* all interfaces.
-* arrays: constant, variable, signal, alias, default value,
- slice, assign, index, 'range,left,right,length attributes
-* alias
-
-* VHDL quizz:
-* A and B and C, where and is not predefined and not associative -> order
- defined by lrm
-* event without value change -> not possible to create such a design
-* for I in 0 to 4 + 5 loop
-* my_int; function "not" (v : my_int := 0) return my_int; var := "not";
-* read operation for array with multiple indexes -> not allowed
-* A <= (others => 0) where A is a subprogram formal interface whose type is
- an unconstrained array.
-*B function returning a file type.
-* null string when index base type left bound has no pred.
-* arch x of y is
- attribute my_attr of my_inst : label is 25;
- component my_comp ... end component;
- begin
- my_inst : my_comp;
- end x;
- Is my_comp a component or a procedure call ? -> label
-* element declaration scope does not extend beyond a package scope -> the
- package scope is extended along with the scope of the logical library.
-* labeled statement inside a for-loop can be attributed.
-* "wait on S'transaction' not allowed since an attribute is not a static name.
-*B constant c : integer := 3 ** 4; which "**" (universal or integer)?
- or: constant c : integer := - 1; (which "-" ?)
-*B type chrptr is access character;
- type chrptr_array is array (natural range <>) of chrptr;
- -> creates an implicit function "&" whose interface is constant of type
- access.
-* package ch1003_002_pkg is
- type my_bit is ('0', '1', 'X');
- function "=" (l, r : my_bit) return boolean;
- end ch1003_002_pkg;
- ...
- use work.ch1003_002_pkg.all;
- ...
- A = B -- A and B of type my_bit
- Both the implicit and explicit "=" operator are visible!
-* package p is
- function f return integer;
- end p;
-
- use work.p.all;
- package p is
- constant c : integer := f;
- end p;
-* redeclaration of a design unit in vhdl02 (not allowed ?)
-* 'FOREIGN for implicit subprograms ?
-* 'FOREIGN with non-locally static value
-*B alias of a physical type (not possible, since only the subtype is named).
-* 'a''attr -> not allowed.
-*B2 visibility in context clause:
- library my_lib;
- entity ent is end ent;
-
- use my_lib.my_pkg.all;
- architecture arch of ent is ...
-* 4.2 Subtype declarations: "if a type mark is the name of a type, the type
- mark denotes this type and also the corresponding unconstrained subtype."
- What is the corresponding subtype of an enumeration type ?
- -> 3.0 "A type is a subtype of itself"
-* name'a'length has no characters...
-*B2 with expr select (a,b) <= "01" when c1, val when others;
- -> type of aggregate is not determinable!!
- -> or type of aggregate depends on the selected expression
- (ex: (a,b) std_logic_vector and then std_ulogic_vector)
-* case statement: expression which is an indexed name and of unidim array type
- (why are the indexes locally static expressions ?)
-* Is an alias overloadable (?) -> yes
-* 5.2 Configuration specification: 'others' -> meaning of 'previous'
- incremental binding for different entity aspect.
- component_configuration that is a primary binding for some instantiation
- and an incremental binding indic for others.
-*B 14.1 'instance_name example: missing ';' after generic clause of BComp
- component; missing ":" before gbottom'path_instance;
- signature is added for subprograms but not for enumeration literals.
- loop_label ?
- staticness
- root design entity (E'PATH_NAME) vs top design entity (E'INSTANCE_NAME)
- meaning of signature ?
-* 10.3 (last paragraph of p 155): 'of a design unit_or' (place of '_').
-*B 3.5.1 vs 3.5.2: in examples: VariableSizedBitArray vs VariableSizeBitArray.
-* 4.2.2: is a default_expression globally static ?
-* 5.1: alias of attribute are allowed ->
- constant obj : bit := '0';
- attribute attr : integer;
- alias attr1 is attr;
- attribute attr of obj : constant is 5;
- ... obj'attr1 ...
-* 5.1: entity designator that denotes an alias .. required to denote the
- entire object. What means entire ? staticness of entire ?
- constant obj : bit_vector (1 to 3);
- alias obj1 : bit_vector (2 to 4) is obj (1 to 3);
-* 8.1:
- process
- begin
- wait for time'high - now;
- end process;
- -> infinite loop or execute only once ?
- (ie does it execute at time'high ?)
-*B Does a generate statement have a declarative_part ?
- according to the BNF of 9.7 and glossary -> no
- according to introduction of clause 9 -> yes
- -> does configuration specification applies recursively ?
-* Can a design unit be decorated with an attribute specification whose entity
- name list is all/others ? (cf notes of 5.1)
-* Can an alias be declared after an all/others attribute specification ?
-* Can a named entity be decorated through an alias not declared in the same
- declarative part ?
-* Can an anonymous type declaration be decorated ?
-*B character literal can be decorated but not referenced.
-*B wait on sig (now < 10 ns);
-*B pure function can allocate memory and may return different value
-*B2 what it the meaning of a name when several non-overloadable declarations
- are visible (one directly, one by selection).
-* 'value: only *one* leading/trailing whitespace allowed ?
-
-* libraries:
-* V:version, O:option, S:set/standard
-* F:file, D:depend, T:time, U:unit, L:location/line
-* A:architecture, E:entity, P:package, B:body, C:configuration
-* M:module/map (library name to filename), W:with (weak depend), X:translate
-* I:instanciated component
-* H:homedir
-* G J K N Q R Y Z
-* + search path, vhdl version, ieee libraries.
-
-* aggregates:
-- dynamic bounds -> special case
-- bounds are determinated by target
-- static bounds and determinated by the aggregate
-- static bounds and static values.
-
-BUGS:
-* no type descriptor is created for access. However, a type descriptor is
- created for array and use the type descriptor of its element. What about
- for array whose element is an access ?
-
-OPTIMIZATIONS:
-* for loop whose range is an array index.
-* avoid to initialize variable if not read before write.
-* avoid stupid range check (ex: a := b, when subtype b = subtype a).
-
-ERROR STORMS:
-* complex_tests: real_vector -> real_vectorX