content update November

This commit is contained in:
Lieuwe Leene 2021-11-26 18:51:05 +01:00
parent deef076a4f
commit 3ca7604967
5 changed files with 242 additions and 12 deletions

View File

@ -1,11 +1,32 @@
--- ---
title: "Configure Nginx 🧩" title: "Setting up a NGINX configuration 🧩"
date: 2021-10-31T15:08:33+01:00 date: 2021-10-31T15:08:33+01:00
draft: false draft: false
toc: false toc: false
images: images:
tags: tags:
- untagged - website
- config
- nginx
--- ---
This is a test This is a test
```bash
nginx
├── conf.d
│   ├── hugo.conf
│   ├── leene.robots
│   ├── leene.ssl
│ └── ...
├── nginx.conf
├── sites-available
│   ├── lieuwe
│ └── ...
├── sites-enabled
│   ├── 0root
│   ├── lieuwe -> ../sites-available/lieuwe
│ └── ...
├── nginx.conf
└── ...
```

View File

@ -17,12 +17,12 @@ services require.
| Name | Description | Name | Description
| ----------------------------------------------- | ----------------------- | ----------------------------------------------- | -----------------------
| **A** Address record | physical IPv4 address associated with this domain | `A` Address record | // physical IPv4 address associated with this domain
| **CNAME** Canonical name record | Alias name for A record name. This is generally for subdomains (i.e. other.domain.xyz as alias for domain.xyz both served the same machine) | `CNAME` Canonical name record | Alias name for A record name. This is generally for subdomains (i.e. other.domain.xyz as alias for domain.xyz both served the same machine)
| **CAA** Certification Authority Authorization | DNS Certification Authority Authorization, constraining acceptable CAs for a host/domain. | `CAA` Certification Authority Authorization | DNS Certification Authority Authorization, constraining acceptable CAs for a host/domain.
| **DS** Delegation signer | The record used to identify the DNSSEC signing key of a delegated zone | `DS` Delegation signer | The record used to identify the DNSSEC signing key of a delegated zone
| **MX** Mail exchange record | Maps a domain name to a list of message transfer agents for that domain | `MX` Mail exchange record | Maps a domain name to a list of message transfer agents for that domain
| **TXT** Text record | Carries machine-readable data, such as specified by RFC 1464, opportunistic encryption, Sender Policy Framework, DKIM, DMARC, DNS-SD, etc. | `TXT` Text record | Carries machine-readable data, such as specified by RFC 1464, opportunistic encryption, Sender Policy Framework, DKIM, DMARC, DNS-SD, etc.
The essential records for web services are the A and CNAME records which enable The essential records for web services are the A and CNAME records which enable
correct name look up when outside you private network. Nowadays SSL should be correct name look up when outside you private network. Nowadays SSL should be
@ -52,3 +52,19 @@ which yields a long public key. You need to break this key up into multiple
strings which the `openkdim` tool may or may not do by default as there is a strings which the `openkdim` tool may or may not do by default as there is a
maximum character length for each TXT entry element. As long as no semi-colons maximum character length for each TXT entry element. As long as no semi-colons
are inserted this should just work as expected. are inserted this should just work as expected.
### Debugging DNS Issues
Often is things don't go as expected. Especially with DNS related issues since
caching prevents real-time corrections.
```bash
nslookup leene.dev
dig $DOMAIN_NAME $RECORD_NAME
```
Two of the better tools here is nslookup and dig. The first will generally
tell you how and where you name lookup is being resolved. Sometimes this
may not be as expected so its always good to double check. The second is
literally a DNS utility that lets you query specific records. For example
testing your openDKIM setup relies on the DNS record correctly being set.

View File

@ -120,3 +120,49 @@ classDiagram
PyViewer <-- ArchiveLoader PyViewer <-- ArchiveLoader
PyViewer <-- ApplicationWindow PyViewer <-- ApplicationWindow
``` ```
### Live viewer command line script
The bash script below uses feh, an X11 image viewing utility, inotify-tools
and ImageMagic from the command line to provide a live view of a mmd file
that is built as changes are made to the file.
```bash
#!/usr/bin/env bash
function usage() {
usage_str="$(basename "${BASH_SOURCE[0]}") IN_FILE OUT_FILE"
usage_str+="[ --config=<Config File> | -c <Config File> ] "
usage_str+="[ -h | --help ]"
cat <<<"
Usage:
$usage_str
Options:
-c | --config: Specify CSS style for Mermaid diagram
Default: None
-h | --help: Displays this menu
"
exit 1
}
function main() {
local ARGS=("-i" "$1" "-o" "$2")
case "$1" in
-c) ARGS=("-i" "$3" "-o" "$4" "-c" "$2");;
--config=*) ARGS=("-i" "$2" "-o" "$3" "-c" "${1#*=}");;
-h|--help) usage;;
-*) echo "Invalid Option: $1"; usage ;;
esac
# echo "IN:${ARGS[1]} OUT:${ARGS[3]}"
mmdc ${ARGS[@]} &> /dev/null
mogrify -trim "${ARGS[3]}"
feh --reload 2 "${ARGS[3]}" &
sleep 0.1
inotifywait -qm --event modify --format '%w' "${ARGS[1]}" | \
( mmdc ${ARGS[@]} ; mogrify -trim "${ARGS[3]}" ) &> /dev/null
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
if [ "$#" -lt 2 ] || [ "$#" -gt 4 ] ; then
usage
fi
main "$@"
fi
```

View File

@ -10,9 +10,8 @@ tags:
This is a list of topics that I may include at some point in time: This is a list of topics that I may include at some point in time:
1. SSL and NGINX setup guide 1. SSL and NGINX setup guide
2. Postfix setup guide 2. Postfix setup guide
3. Danbooru setup guide 3. Pyside notes from pyviewer project
4. pyside notes from pyviewer project 4. Other fun stuff
5. other fun stuff
I also want to share some of the IC design work building up a technical profile: I also want to share some of the IC design work building up a technical profile:
1. Chip gallery 1. Chip gallery

View File

@ -10,8 +10,22 @@ tags:
- verification - verification
--- ---
Netlisting issues can be some of the more frustrating aspects of circuit design
tool chains primarily because its it all text based and very old fashioned.
The Cadence tools for example have various command-line utilities but
documentation is underwhelming to say the least. Quite often though they are
inevitable when combining different tools, design flows, or handling someone
else's IP. In order to cope with the usual inconsistencies I rely on the
scripts below to pre and post process SPICE netlists.
## Port Order Reshuffling ### Port Order Reshuffling
The default netlister and spice simulators usually connects sub component
terminals in terms of the order in which they are defined in the spice `.SUBCKT`
definition. Conflict arises however since IP vendors on the other hand tend
to sort the port order in someway in the spice netlist but the Cadence
symbol/schematic definition will usually disregard this order causing
connectivity issues later.
```bash ```bash
function getSortedOrder() { function getSortedOrder() {
@ -28,6 +42,19 @@ function getSortedOrder() {
fi fi
echo "${SOURCE[@]:0:2} ${SORTED[@]}" echo "${SOURCE[@]:0:2} ${SORTED[@]}"
} }
```
Cadence tools will prefer alphabetical ordering. The bash script above will
replicate this sorting behaviour if you pass it a `.SUBCKT` definition string.
The purpose here is that when you are given a netlist from a vendor you can
prepare an internal version that already sorts the ports alphabetically.
In order to do this in terms of editing a file however you can use the script
below which is called as: `updatePortOrder $CKT_NAME $FILE_NAME`. This will
look for the definition given a `CKT_NAME` in the spice file and create a
new file `CKT_NAME.cdl` in the current directory.
```bash
function updatePortOrder() { function updatePortOrder() {
local TARGET="$1" local TARGET="$1"
local CDL_FILE="$2" local CDL_FILE="$2"
@ -43,6 +70,10 @@ function updatePortOrder() {
} }
``` ```
The second script however relies on some awk-based spice parsing calls to
properly find and replace the relevant sections in the netlist. `catch.awk`
simple finds the `SUBCKT` statement relevant and prints it to stdout.
```awk ```awk
BEGIN{ hold = ""; IGNORECASE = 1 } BEGIN{ hold = ""; IGNORECASE = 1 }
NF { NF {
@ -53,6 +84,9 @@ NF {
$0 ~ target { hold = $0 }; $0 ~ target { hold = $0 };
``` ```
Then `release.awk` helps to insert the definition back into the netlist with
the option to swap out any delimiters in the port names.
```awk ```awk
BEGIN{output="";hold="";IGNORECASE=1}; BEGIN{output="";hold="";IGNORECASE=1};
NF{if($1!="+")hold=""} NF{if($1!="+")hold=""}
@ -67,3 +101,117 @@ $0~target{
print output} print output}
NF{if(hold=="")print $0} NF{if(hold=="")print $0}
``` ```
### Netlisting Environment:
```skill
;; spice.env
simStopList = '("auCdl")
simViewList = '("auCdl" "schematic")
auCdlDefNetlistProc = "ansCdlSubcktCall"
globalGndSig = ""
globalPowerSig = ""
shrinkFACTOR = 0
checkScale = "meter"
preserveDIO = 'nil
checkDIOAREA = 'nil
checkDIOPERI = 'nil
preserveCAP = 'nil
checkCAPVAL = 'nil
checkCAPAREA = 'nil
checkCAPPERI = 'nil
preserveRES = 'nil
checkRESVAL = 'nil
checkRESSIZE ='nil
resistorModel = ""
shortRES = 2000
simNetlistHier = 't
pinMAP = 'nil
displayPININFO = 't
checkLDD = 'nil
connects = ""
setEQUIV = ""
cdlSimViewList = '("auCdl" "schematic")
cdlSimStopList = '("auCdl")
simSimulator = "auCdl"
simRunDir = "$RUN_DIR"
hnlNetlistFileName = "$CELL.src.net"
simViewName = "$SCH_VIEW"
simCellName = "$CELL"
simLibName = "$LIBRARY"
incFILE = "$RUN_DIR/source.added"
auCdlNoForwardSlash = t
```
```skill
;; simrc
hnlSetBusDirectionDescending = 't
simVerilogGenerateSingleNetlistFile = 't
hnlVerilogPrintSpecparam = nil
simVerilogNetlistExplicit = 't
simPrintInhConnAttributes = t
hnlInhConnUseDefSigName = t
```
```skill
;; verilog.env
simLibName = "$LIBRARY"
simCellName = "$CELL"
simViewName = "$SCH_VIEW"
simSimulator = "verilog"
simNotIncremental = nil
simReNetlistAll = 't
simNetlistHier = t
simVerilogLaiLmsiNetlisting = 'nil
verilogSimViewList = '("behavioral" "functional" "system" "verilog" "schematic" "symbol")
simVerilogAutoNetlisting = 't
simVerilogTestFixtureFlag = 't
simVerilogTestFixtureTemplate = "All"
simVerilogNetlistExplicit = 't
hnlVerilogTermSyncUp = "mergeAll"
simVerilogFlattenBuses = 'nil
vtoolsUseUpperCaseFlag = 'nil
hnlVerilogCreatePM = 'nil
simVerilogTopLevelModuleName = "verilog_$CELL.top"
simHierarchyPrefix = "verilog_$CELL.top"
simNCVerilogHierPrefix = "verilog_$CELL:top"
verilogSimStopList = '("verilog" "symbol")
simVerilogPwrNetList = '("$PWRLIST")
simVerilogGndNetList = '("$GNDLIST")
vtoolsifForceReNetlisting = 'nil
simVerilogLibNames = '("$LIBLIST")
vlogifInternalTestFixtureFlag = 'nil
simVerilogBusJustificationStr = "U"
simVerilogTestFixtureTemplate = "All"
simVerilogDropPortRange = 't
simVerilogHandleUseLib = 'nil
simVerilogHandleAliasPort = 't
simVerilogPrintStimulusNameMappingTable = 'nil
simVerilogProcessNullPorts = 'nil
simVerilogIncrementalNetlistConfigList = 'nil
hnlVerilogNetlistStopCellImplicit = 'nil
simVerilogOverWriteSchTimeScale = 'nil
vlogifCompatibilityMode = "4.2"
simVerilogHandleSwitchRCData = 'nil
vlogifUseAssignsForAlias = 't
vlogifDeclareGlobalNetLocal = 'nil
vlogifSkipTimingInfo = 'nil
simVerilogEnableEscapeNameMapping = 'nil
simVerilogStopAfterCompilation = 't
simVerilogVhdlImport = 'nil
simVerilogTopCellCounter = 0
hnlSupportIterInst = 't
hnlNetlistFileName = "$CELL.v"
hnlSetBusDirectionDescending = 't
simVerilogGenerateSingleNetlistFile = 't
hnlVerilogPrintSpecparam = 'nil
simPrintInhConnAttributes = 't
hnlInhConnUseDefSigName = 't
```
### Property Based Removal
```
hnlHonorLxRemoveDevice = 't
hnlUserShortCVList = list( list("analogLib" "res") list("tsmcN40" "rnpolywo") )
```