* Bug: In Nero & Ocp, fix small compilation issues under Cygwing.
* Bug: In alc_env.sh.in & alc_env.csh.in, the man pages are under
TOP/share/man and no longer TOP/man.
* Change: In all the supplied RDS files, add the MBK_WIRESETTING
table (cmos.rds, techno-symb.rds, techno-035.rds).
* New: In ring, make uses of the MBK_WIRESETTING_TABLE.
* New: In cells/pxlib, add the '_sp' variant of the pads to emulate
the old padlib. This way we have only one "true" to maintain,
not two kind. The '_sp' variant is an encapsulation of the '_px'
one. Basically it provides connectors *on* the abutment box
instead of over-the-cell (and inside AB) terminals.
Contributed by N. Shimizu & F. Wajsburt.
ATTENTION: At this point there is a problem between ring and the
'_sp' emulated version of the pad. Ring doesn't seem
to see correctly the the power rails from the pads and
made short circuits with ordinary signals...
It is very risky to use this version until this issue
is resolved.
* Bug: In <rds>, in rprparse.c RprGetLine(), when the rds file neither
contains a WIRESETTING table nor druc rules, the end of file case
was not correctly handled causing the RprReadParam() function to
exit with a truncated file error.
* Bug: In <rds>, in rfmaccess.c viambkrds(), the holes of the BIGVIAs
are aligned on a design-wide matrix to allow two overlapping BIGVIAs
to have their holes exactly at the same places (one consequence is
that the holes of a BIGVIA may be off-center).
But, if the BIGVIA is "too small", that is, it's area cannot
accomodate at least one "on grid" hole, it silently replaced by a
default (i.e. minimal size VIA). In that case you may endup with
a mixture of BIGVIA (when the hole is aligned) and default VIA,
when it is not... The fun part, is that it is DRC correct, but
looks messy.
To avoid this, we systematically use the default VIA when the
side of the BIGVIA is less than two holes wide (in either direction).
* New: In RDS tables, add rules describing the wiring for the router and
the cell gauge. This do not scritly respect the fact that RDS deals
only with the symbolic to real translation and programs that are
purely symbolic should not access it. But is is the simplest way to
provides them with default configuration, whithout using environement
variables.
So now, ocp and nero do read the rds configuration file, but only
for the symbolic wiring rules informations.
Modification contributed by N. Shimizu.
* Change: In <mbk>, in mbk_utils.c, nowadays all C libraries supplies the
tolower() function, so no longer use our own. And besides it was causing
problems in the static initialization when both rds and mbk environement
where loaded together.
Modification contributed by N. Shimizu.
* Bug: In <rds>, In rprparse.c in RprTranslateParam() there was a rounding
error again. We cannot simply adds 0.5 as this function could be called
for *negative* values. Instead, use lround() C function (round in
opposite directions for positive or negatives integers).
* Bug:
In some places, fprintf was called like:
char* name;
fprint( stderr, name );
It should have been:
fprint( stderr, "%s", name );
Patch contributed by T. Maas on behalf of Fedora.
* Bug: In <mbk>, in mvl_scomp_y.y, when the ENTITY PORT was parsed,
pairs of losig/locon must be created on the lofig (one losig per
locon). But in the case of a port 'out mux_bit|mux_vector bus',
the signals *where* created but *not* connected to the locons.
Instead, the previously created signal from former locons were
connected. This was showing in flattenlofig() and causing wrong
short circuits to be detected by lvx (tricky to diagnose).
* Bug: In <mbk>, in mbk_lo_util.c, check the PRCN struct attribute
to be NULL before trying to display it in mlodebug().
* Change: In <mbk>, more debug informations in various places.
* Bug: In <rds>, in rut.h, coord_t is used to read coordinates from gds
that are on 32 bits. But it was using long that are 64 bits on 64
bits architectures causing crash. Now uses int32_t.
Patch contributed by N. Shimizu.
* Bug: In <rds>, in rprparse::RdrTranslateParam(), add 0.5 before casting
a double into a long, to avoid rounding error (truncation) for the
returned value. Patch contributed by N. Shimizu.
This is mainly due because when parsing the <.rds>, the sscanf may
slighly change numbers. For example, 0.09 will be parsed as a double
0.089999999999999997. Then later multiplations fall short when
truncated into integers.
* Change: In <rds>, gds_parse & gds_error, if a layer whose index was not
in the rds file was encountered, it was just discarted but the parsing
did continue, resulting in a possibly incoherent RDS figure.
Now we just stop the parsing and trigger the error mechanism
returning a NULL pointer, which is then safely handled by <dreal>.
Under dreal, the error messages could be retrieved from the
transient log files /tmp/alliance_all_PID, which is removed when
dreal close.
This is the missing message from the N-2 commit.
It also include small corrections.
* Change: There was depency loop in Alliance libraries, mainly between
the database <mbk> and it's parsers/drivers (<mbkap>, <mbkvti>, ...).
This was not causing problems on systems that allows symbols to be
undefined when the library is built, but on others it prevents to
build at least dynamic libraries, for example under Cygwin.
Note: to reproduce this behavior under linux pass '-Wl,-z,-defs'
in the CFLAGS/CXXFLAGS.
Another side effect was to prevent parallel building (-jX).
* Change: <mbkvhdl> is redundant with <mbkvhdlg> which is newer, so
this library is suppressed.
* Change: mbk merged libraries, <mbkap>, <mbkvti> goest into Mpu.
<mbkedif>, <mbkal>, <mbkhilo>, <mbkmg>, <mbkspice>, <mbkmg>,
<mbkvhdlg> and <mbkvrlog> goes into Mlu.
* Change: rds merged libraries, <rdscif> and <rdsgds> goes into Rds.
All Rds sub-libraries are also mergeds into Rds.
* Change: vbh merged libraries, <vbl>, <vvh>, <vtl> & <vpd> goes into
Vbh.
* Change: pat merged libraries, <ppt> & <phl> goes into Pat.
* Change: in <asimut>, the Cst libraries is transferred into <beh> to
be merged with Beh.
Conflicts:
alliance/src/ocp/src/common/Makefile.am
alliance/src/ocp/src/placer/Makefile.am
alliance/src/ppt/src/Makefile.am
Devel was not started from the last master commit, have to
push back the changes again...
* Change: There was depency loop in Alliance libraries, mainly between
the database <mbk> and it's parsers/drivers (<mbkap>, <mbkvti>, ...).
This was not causing problems on systems that allows symbols to be
undefined when the library is built, but on others it prevents to
build at least dynamic libraries, for example under Cygwin.
Note: to reproduce this behavior under linux pass '-Wl,-z,-defs'
in the CFLAGS/CXXFLAGS.
Another side effect was to prevent parallel building (-jX).
* Change: <mbkvhdl> is redundant with <mbkvhdlg> which is newer, so
this library is suppressed.
* Change: mbk merged libraries, <mbkap>, <mbkvti> goest into Mpu.
<mbkedif>, <mbkal>, <mbkhilo>, <mbkmg>, <mbkspice>, <mbkmg>,
<mbkvhdlg> and <mbkvrlog> goes into Mlu.
* Change: rds merged libraries, <rdscif> and <rdsgds> goes into Rds.
All Rds sub-libraries are also mergeds into Rds.
* Change: vbh merged libraries, <vbl>, <vvh>, <vtl> & <vpd> goes into
Vbh.
* Change: pat merged libraries, <ppt> & <phl> goes into Pat.
* Change: in <asimut>, the Cst libraries is transferred into <beh> to
be merged with Beh.
* Bug: In <mbkvhdlg>, cast the hash table index entries from pointer
to unsigned long instead of long to avoid negative numbers when
computing the modulo (shows on Cygwin). This was causing <boog>
to crash.
* Bug: In <ppt>, with bison 2.7, yylval must not be re-declared extern
(didn't show on earlier versions).
* Change: In <ocp>, uses "-std=gnu++0x" instead of "-std=c++0x" to
have both C++11 features *and* POSIX features (namely: strdup).
The problem is that strdup is *not* ANSI, but only POSIX and as
such, not defined when c++0x is active. Will have to change
again in the future as gnu++0x is on the way of deprecation...
This commit is way too big. Next time split it tool by tool.
All tool sources have been checked with cppcheck & gcc. All correctables
errors/warning have been removed:
* Now uses correct conversion specifiers in printf(), mostly 'u' instead
of 'd' for unsigneds.
* In scanf(), uses systematically a maximum field width, 11 for int,
22 for long int and the appropriate length for char*.
* In strcpy(), no longer uses same array for source & dest, but uses
an intermediate array.
* Remove (or comment) unused variables.
* In C++ files, correct constructors attribute initialisation and
disable copy constructors.
* When possible, correct memory leaks. Some corrections would need a
more intimate knowledge of the source than I do.
* Removed some "gets()" calls.
* In parsers, undeclare yyunput & yyinput when necessary.
* NOT correct variable scope as it may clutter the code (my opinion).
Specific tools remark:
* In <asimut>, comment beginning with "FRAGILE" signals a very ugly
trick: structs passed as losig_list but with only the two first
fields identical.
* In <graal> & <dreal> for char used as table index, uses a cast toward
int, but in <xfsm>, <xgra>, <xsch> & <xvpn> simply declares the
variables int.
* In <cells>, dp_nmux_x1.ap, shrink the ALU2 part of the ALU3 terminals
so they do not collide with neighboring track. Has do to it manually
as Graal refuse to shrink them. The same correction must be done on
other cells for nero/kite dual compliance.
* Cleanup: Remove long time unused tools <pcbs>, <grog>, <gcp>, <genview>,
<growstk>, <ocr> and <vst2xnf>. They may still be recovered by
reverting to the original 'v5.1' tag.
* Change: In <attila>, remove the CVS checkout part and adapt to the
slightly different source tree organisation (alliance/alliance/src).
* Setup: Added .gitignore to exclude the files generated "in source" by
automake (when tools are built).
* New: Small script to perform a complete cppcheck on the whole source
tree.
+ Change: In dp_sxlib, dp_mux_x4 & dp_nmux_x1 removes METAL2 blockages
under METAL3 terminals and replace them by strips of METAL2 belonging
to the relevelant net. The previous configuration was generating
impossible cases for Kite to solve.