From 89f32313c34353ca6020dd41ed4ebd4315f46a60 Mon Sep 17 00:00:00 2001
From: Stefan Frederik
Date: Sun, 3 Jan 2021 17:34:08 +0100
Subject: [PATCH] doc updates; only hilight connected instances (when doing a
net highlight) if symbol (or instance) has highlight=true attribute set.
---
doc/xschem_man/install_xschem.html | 16 ++++++++++------
doc/xschem_man/symbol_property_syntax.html | 18 ++++++++++++++++++
src/hilight.c | 10 ++++++----
xschem_library/examples/cmos_example.sch | 2 +-
4 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/doc/xschem_man/install_xschem.html b/doc/xschem_man/install_xschem.html
index ffdf51af..1d9c91c9 100644
--- a/doc/xschem_man/install_xschem.html
+++ b/doc/xschem_man/install_xschem.html
@@ -35,12 +35,16 @@ p{padding: 15px 30px 10px;}
Tck/Tk versions may vary on different systems, 8.4, 8.5, 8.6 versions are all good.
- tcl8.6 libx11-dev
- tk8.6 libxpm-dev
- tcl8.6-dev bison
- tk8.6-dev flex
- gawk or mawk libcairo2-dev
-
+ libX11-6 libx11-dev
+ libxrender1 libxrender-dev
+ libxcb1 libx11-xcb-dev
+ libcairo2 libcairo2-dev
+ tcl8.6 tcl8.6-dev
+ tk8.6 tk8.6-dev
+ flex bison
+ libxpm4 libxpm-dev
+ gawk or mawk
+
If configure ends with no errors we are ready to compile:
diff --git a/doc/xschem_man/symbol_property_syntax.html b/doc/xschem_man/symbol_property_syntax.html
index 9fc046a2..97309939 100644
--- a/doc/xschem_man/symbol_property_syntax.html
+++ b/doc/xschem_man/symbol_property_syntax.html
@@ -327,6 +327,24 @@ m5 net1 b net2 VSSPIN nlv w=wn l=ln geomod=0 m=1
can be defined in case of elements with multiple outputs.
+
+ Commands that can appear in functions are:
+
+
+ - n: A digit indicates to put on the stack the logic value (0, 1, X) of pin with sequence number n
+ The sequence number of a pin my be obtained by clicking the red square of the pin and pressing Shift-S.
+ - &: Does a logical AND operation of the last 2 elements on top of the stack, the result is left on the stack
+ - |: Does a logical OR operation of the last 2 elements on top of the stack, the result is left on the stack
+ - ^: Does a logical XOR operation of the last 2 elements on top of the stack, the result is left on the stack
+ - ~: Does a logical Negation operation of the last element on top of the stack, the result is left on the stack
+ - d: Duplicates top element on the stack
+ - x: Exhanges the 2 top elements on the stack
+ - H: Puts a Logic '1' on the stack
+ - L: Puts a Logic '0' on the stack
+
+
+ The remaining value on the stack is the value that is returned and assigned to the output pin.
+
global
a global=true property in a label type symbol will declare the corresponding net as 'global'.
diff --git a/src/hilight.c b/src/hilight.c
index fec758e3..30d4dcbf 100644
--- a/src/hilight.c
+++ b/src/hilight.c
@@ -661,7 +661,7 @@ int search(const char *tok, const char *val, int sub, int sel)
}
/* "drill" option (pass through resistors or pass gates or whatever elements with */
-/* 'goto' properties set on pins) */
+/* 'propag' properties set on pins) */
void drill_hilight(int mode)
{
char *netname=NULL, *propagated_net=NULL;
@@ -671,7 +671,7 @@ void drill_hilight(int mode)
xRect *rct;
int i, j, npin;
char *propagate_str = NULL;
- int propagate;
+ int propagate, hilight_connected_inst;
struct hilight_hashentry *entry, *propag_entry;
prepare_netlist_structs(0);
@@ -681,10 +681,12 @@ void drill_hilight(int mode)
symbol = xctx->inst[i].ptr+xctx->sym;
npin = symbol->rects[PINLAYER];
rct=symbol->rect[PINLAYER];
+ hilight_connected_inst = en_hilight_conn_inst &&
+ ( (xctx->inst[i].flags & 4) || ((xctx->inst[i].ptr+ xctx->sym)->flags & 4) );
for(j=0; jtype && IS_LABEL_SH_OR_PIN(symbol->type))) ) {
+ if(entry && (hilight_connected_inst || (symbol->type && IS_LABEL_SH_OR_PIN(symbol->type))) ) {
xctx->inst[i].color = entry->value;
}
my_strdup(1225, &propagate_str, get_tok_value(rct[j].prop_ptr, "propag", 0));
@@ -813,7 +815,7 @@ static void send_current_to_gaw(int simtype, const char *node)
my_free(1182, &t);
}
-/* hilight_instances: if set to 1 hilight non pin/label symbols with "highlight=true" attribute set */
+/* hilight_instances: if set == 1 hilight non pin/label symbols with "highlight=true" attribute set */
void propagate_hilights(int set, int clear, int mode)
{
int i, hilight_connected_inst;
diff --git a/xschem_library/examples/cmos_example.sch b/xschem_library/examples/cmos_example.sch
index 817e31ba..a1a84dfd 100644
--- a/xschem_library/examples/cmos_example.sch
+++ b/xschem_library/examples/cmos_example.sch
@@ -106,5 +106,5 @@ C {ngspice_probe.sym} 500 -390 0 0 {name=r1}
C {ngspice_probe.sym} 420 -160 0 0 {name=r2}
C {ngspice_probe.sym} 600 -260 0 0 {name=r3}
C {ngspice_probe.sym} 770 -420 0 0 {name=r4}
-C {ngspice_get_value.sym} 620 -160 0 0 {name=r5 node=i(@m1[id])
+C {ngspice_get_value.sym} 620 -160 0 0 {name=r5 node=i(@$\{path\}m1[id])
descr="I="}