a UnitRange is a specific type of range that represents
a sequence of integers with a step of 1
UnitRange objects are "lazy" and efficient. They do not
allocate memory for all elements in the range until explicitly converted
to a concrete array (e.g., using collect())
views
A view is essentially a
pointer to a sub-section of another vector,
but not a standalone vector itself
@views is a macro that converts sliced arrays into views
(pointers are much cheaper than creating copies of arrays). For more
information on how to use the view syntax correctly
Conditional Compilation In
C++
Using g++ only
conditional.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include<iostream>
#define na 4
intmain(){ int a[na];
a[0] = 2; for (int n = 1; n < na; n++) a[n] = a[n-1] + 1;
#ifdef DEBUG // Only kept by preprocessor if DEBUG defined for (int n = 0; n < na; n++) { std::cout << "a[" << n << "] = " << a[n] << std::endl; } #endif return0; }
Before inserting sign-off metal fill, stream out a GDSII stream file
of the current database. Specify the mapping file and units that match
with the rule deck you specify while inserting metal fill. If necessary,
include the detailed-cell (-merge option) Graphic Database
System (GDS).
Just replace run_pvs_metal_fill with
run_pegasus_metal_fill
Note: Innovus metal fill (e.g.
addMetalFill, addViaFill, etc.) does not
support 20nm and below node design rules. We strongly recommend the
Pegasus/PVS metal fill solution for 20nm and below. If you have sign-off
metal fill rule deck for 28nm and above available, we recommend you to
move to Pegasus/PVS solution too.
trimMetalFillNearNet does not check DRC rules. It
only removes the metal fill with specified spacing
Do not perform ECO operations after dump in
sign-off metal fill (by run_pvs_metal_fill or
run_pegasus_metal_fill), especially, at 20nm and below
nodes.
If you perform an ECO action, the tool cannot get DRC clean
because trimMetalFill does not support 20nm and below node
design rules.
The sign-off metal fill typically does not cause DRC issues with
regular wires.
The run_pvs_metal_fill command does the following:
Runs PVS with the fill rules to create a GDSII output file.
Converts the GDSII to a DEF format file based on the GDSII to DEF
layermap provided.
Loads the resulting DEF file into Innovus.
Pegasus is similar to PVS, shown as below,
The run_pegasus_metal_fill command does the
following:
Runs Pegasus with the fill rules to create a GDSII output file.
Converts the GDSII to a DEF format file based on the GDSII to DEF
layermap provided.
Loads the resulting DEF file into Innovus.
Reference:
Innovus User Guide, Product Version 21.12, Last Updated in November
2021
How
does EDI System identify spare cells in a post-mask ECO flow?
How
does EDI System identify spare cells in a post-mask ECO flow?
Spare cells should have a unique string in their instance name to
identify them. Then the command specifySpareGate or
ecoDesign -useSpareCells patternName is run to identify the
spare instances. For example, if all spare cells have _spare_ in their
name then they are identified using:
1
specifySpareGate -inst *_spare_*
OR
1
ecoDesign -spareCells *_spare_* ...
Note: if you are making manual ECO
changes to a netlist and converting a spare cell to a logical instance,
it's important to change the instance name. Otherwise,
the instance may be identified as a spare cell if a future ECO is
performed because it still has the spare cell instance name.
Note: sparecell's pointer and name is swapped with
the placed cell.
Error in "Innovus
Text Command Reference 21.12"
ecoSwapSpareCell
If the cell to be swapped is unplaced, it is mapped to the spare
cell. *instName* is deleted, and its connection is
transferred to the spare cell. If the cell to be swapped is placed, it
is swapped with the spare cell and is renamed to
*instNameSuffix* if the -suffix option is
used. If a suffix is not specified, the *instName* cell is
renamed to *spareCellInstName*. The *instName*
cell's connections are transferred to *spareCellInstName*.
The input of *instName* is tielo, based on the
global connection definition.
$ sudo lvdisplay --- Logical volume --- LV Path /dev/rl/swap LV Name swap VG Name rl LV UUID toZKEu-P5oV-6WOV-026Z-eFnI-xaSP-FgEbz5 LV Write Access read/write LV Creation host, time myserver, 2021-12-03 21:28:03 +0800 LV Status available # open 2 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1
--- Logical volume --- LV Path /dev/rl/root LV Name root VG Name rl LV UUID S2soRE-umc7-Z6b3-i44x-TiBO-ulnk-ETgEoj LV Write Access read/write LV Creation host, time myserver, 2021-12-03 21:28:03 +0800 LV Status available # open 1 LV Size <194.00 GiB Current LE 49663 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
compile vim from
source with GUI support
1 2 3 4
# gtk3 in Rocky Linux 8.5 ./configure --with-features=huge --enable-gui=gtk3 --enable-python3interp --prefix=/usr make -j`nproc` sudo make install
binkey
Inserting a new line below: o
above: O
To insert before the cursor: i
After: a
Before the line (home): I
Append at the end of line: A
network connection using
nmcli
Problem
There is no network connection and device is not managed
1 2 3 4
$ nmcli device status DEVICE TYPE STATE CONNECTION eth0 ethernet unmanaged -- lo loopback unmanaged --
solution
1
sudo nmcli networking on
Then, eth0 is connected
1 2 3 4
$ nmcli device status DEVICE TYPE STATE CONNECTION eth0 ethernet connected Ethernet connection 1 lo loopback unmanaged --
What
is the proper method to remove old kernels from a Red Hat Enterprise
Linux system?
Red Hat Enterprise Linux 8
The YUM version 4 (based on the upstream DNF project)
method for removing kernels and keeping only the latest version and
running kernel:
1
$ yum remove --oldinstallonly
From the yum man page:
1 2 3
dnf [options] remove --oldinstallonly Removes old installonly packages, keeping only latest versions and version of running kernel.
New
windows and forms appear behind the Library Manager in background when
using GNOME 3
Using Red Hat Enterprise Linux 8, Rocky
Linux 8 and the GNOME 3 window manager, the
new Virtuoso Schematic/Layout/ADE windows and forms sometimes pop up
under or below the Library Manager or on the desktop in
the background instead of the foreground and cannot be seen. Sometimes,
they are iconized; they do not come on the top in front, though it is
the most recent window opened.
Self-pity gets pretty close to paranoia and paranoia is one of the very hardest things to reverse. It's a ridiculous way to behave and when you avoid it you get a great advantage over everybody else, almost everybody else, because self-pity is a standard condition and yet you can train yourself out of it.
Envy is a really stupid sin because it's the only one you could never possibly have any fun at. There's a lot of pain and no fun. Why would you want to get on that trolley?
- Charlie Munger
1 2 3 4
Every mischance in life was an opportunity to learn something and your duty was not to be submerged in self-pity, but to utilize the terrible blow in a constructive fashion.
Carson's prescriptions for sure misery included: 1) Ingesting chemicals in an effort to alter mood or perception; 2) Envy; and 3) Resentment.
Johnson spoke well when he said that life is hard enough to swallow without squeezing in the bitter rind of resentment.
1 2 3 4
The past was a lie, that memory has no return, that every spring gone by could never be recovered, and that the wildest and most tenacious love was an ephemeral truth in the end.
- Gabriel García Márquez's One Hundred Years of Solitude
1 2 3
Life can only be understood backwards; but it must be lived forwards.
- Soren Kierkegaard
1 2 3 4 5
我有一种哲学,就是不为过去所做的事情后悔。只是设法记住你当时为什么做出那样的决定。
I have a philosophy that it doesn't do any good to go and make regrets about what you did before but to try to remember how you made the decision at the time.
- Richard P. Feynman, Perfectly Reasonable Deviations from the Beaten Track, p. 421
1 2 3 4 5 6 7 8 9
The healthier strategy for controlling the fear of failure is to redefine the meaning of your mistakes.
People with low self-esteem consider mistakes to be an indication of a general lack of worth. Each error reaffirms their underlying belief that something is terribly wrong with them.
In chapter 10, on handling mistakes, you will explore one of the fundamental laws of human nature: that you always choose actions that seem most likely to meet your needs based on current awareness. You make the best decision you can at any point in time, given what you know and what you want.
The secret to coping with any failure is to recognize that each decision you've made was the very best one available under the circumstances.